Suite de Django Beginners Create Easy Apps 1. Nous allons réduire autant que possible les choses compliquées et gênantes, créer une application Web simplifiée et nous spécialiser dans l'apprentissage du fonctionnement de Django. Ne comprenez que ce qui est connecté et comment il se déplace autour du back-end. Si vous implémentez CRUD (créer, lire, mettre à jour, supprimer) et vous déplacer en toute sécurité, vous atteindrez l'objectif. (Veuillez ne pas me demander s'il s'agit d'une application Web même si je ne peux pas me connecter au net.)
Le nom du projet est config et le nom de l'application est myapp. En d'autres termes, les deux commandes suivantes ont été exécutées
Le répertoire des modèles est dans la même hiérarchie que manage.py et setting.py a également été modifié.
Maintenant que vous avez une boîte (ou un tableau) avec les informations dans model.py, décidez où placer ces informations. Pour ce faire, écrivez d'abord le code dans config / urls.py.
config/urls.py
from django.contrib import admin
from django.urls import path, include #ajouter inclure
urlpatterns = [
path('admin/', admin.site.urls),
path('myapp/', include('myapp.urls')), #Ajouter cette ligne
]
chemin (`` 'myapp /' ... signifie
127.0.0.1: 8000 / myapp / .
myapp.urls entre parenthèses d'inclusion est" détaillé dans urls.py dans le répertoire myapp " Cela signifie "yo". Ensuite, créez myapp / urls.py. Créez et modifiez le fichier vous-même. Tout d'abord, écrivez le code pour ces deux adresses: ʻindex
(écran de liste) qui affiche la liste entière, et movie_detail
(écran de détail) qui affiche les détails du film lorsque vous cliquez sur le titre du film.
myapp/urls.py
from django.urls import path
from . import views
app_name = 'myapp'
urlpatterns = [
path('', views.IndexView.as_view(), name='index'),
path('movie/<int:pk>/', views.MovieDetailView.as_view(), name='movie_detail'),
]
L'explication du code est la suivante ... juste un rappel.
Les débutants ne savent pas de quel code ils ont besoin, où ils peuvent ou ne devraient pas. Ce que vous pouvez décider vous-même
ou
movie / <int: pk> `ou
MovieDetailView` (car il sera décrit plus tard dans views.py) ou
movie_detail`Au-dessus de trois. A part cela, le code et les instructions que Django et python ont depuis le début ne doivent pas être modifiés.
Écrivez les trois codes suivants dans la fonction de chemin
J'ai fait une boîte avec des informations dans models.py. J'ai décidé où coller (adresse) dans urls.py. La prochaine chose à faire est "comment retirer les informations contenues dans le modèle et préparer le collage", et views.py est responsable de cela.
En parlant de ce qui est mieux, View to function (vue des fonctions) ou Class (vue des classes). Dès la conclusion, la vue basée sur les classes est recommandée. Code très facile à écrire. Cependant, pour les débutants, il est difficile de comprendre comment l'utiliser car on ne sait pas ce qui se passe avec la blackboxing. En fait, si vous lisez le document et creusez plus profondément, vous pouvez voir que cela n'a rien à voir avec une boîte noire, mais je ne comprends pas les termes expliqués plus loin, donc je suis malade. Au contraire, la fonction view a un peu plus de code, mais vous pouvez voir comment cela fonctionne. Cette fois, je voudrais l'implémenter avec la vue basée sur les classes et essayer de la réécrire avec la fonction de vue lorsqu'elle est terminée. En d'autres termes, dans l'ordre inverse du tutoriel. Depuis que j'ai décidé les adresses de l'écran de liste et de l'écran de détail plus tôt, j'écrirai le code pour extraire les informations à afficher et me préparer à coller les informations.
myapp/views.py
from django.views import generic
from myapp.models import Movie, Director, Log
class IndexView(generic.ListView):
template_name = 'myapp/index.html'
context_object_name = 'movie_list'
queryset = Movie.objects.all()
class MovieDetailView(generic.DetailView):
model = Movie
template_name = 'myapp/detail.html'
C'est tout. Beaucoup moins de code. Après cela, DetailView le gère automatiquement correctement. Le mémorandum est le suivant.
【L'ensemble】
【ListView】 3. Utilisez le jeu de requêtes pour récupérer les informations du modèle 4. Nommez le bloc d'informations avec context_object_name 5. Transmettez les informations au fichier HTML spécifié par nom_modèle
【DetailView】 6. Choisissez le modèle pour apporter les informations 7. Transmettez les informations au fichier HTML spécifié par nom_modèle
Il est maintenant temps d'afficher correctement les informations. Un fichier modèle est un fichier HTML. Voyez comment vous écrivez le code et à quoi il ressemble. Avant cela, créez un répertoire myapp dans le répertoire templates et créez un fichier HTML dans ce répertoire myapp. La structure des répertoires est la suivante.
.
├── config
├── db.sqlite3
├── manage.py
├── myapp
├── myenv
├── static
└── templates
└── myapp #Créez un fichier HTML dans ce répertoire
└── index.html
└── detail.html
À l'origine, je créerais base.html, je l'étendais avec {% block%}, etc., mais je crée honnêtement index.html et detail.html.
templates/myapp/index.html
{% if movie_list %}
{% for movie in movie_list %}
<li>
<a href="{% url 'myapp:movie_detail' movie.id %}">{{ movie.title }}</a>
{{ movie.director }}
{{ movie.watch_date }}
</li>
{% endfor %}
{% endif %}
Donc, si vous exécutez le serveur et vérifiez l'affichage, ce sera comme indiqué dans la figure ci-dessous.
Si vous cliquez sur le lien de la partie titre de l'écran de liste, l'écran des détails s'affiche, mais le code est le suivant
templates/myapp/detail.html
<h1>{{ movie.title }}</h1>
<h2>{{ movie.director }}</h2>
<h3>{{ movie.watch_date }}Visualisation</h3>
{% for log in movie.log.all %}
<li>{{ log.text }}</li>
{% endfor %}
Donc, si vous affichez également le résultat avec runserver, ce sera comme indiqué dans la figure ci-dessous
Tant que vous comprenez où et comment ils sont connectés, vous pouvez écrire et afficher du code avec cette combinaison. J'ai eu du mal à ne pas connaître la connexion dans le tutoriel officiel ... Au fait, les deux articles suivants (je l'ai écrit) ont compris et résumé la connexion du tutoriel officiel en tant que débutant.
Même après un an et demi, je ne pouvais pas sortir du cours pour débutants en marchant comme une tortue (en pleurant) ... Bref, cette fois j'ai eu la partie Lire de CRUD (Créer, Lire, Mettre à jour, Supprimer). La prochaine fois, créez! Cependant, je peux flirter et aller réécrire la fonction View. Si vous avez des erreurs, j'apprécierais vos conseils.
Recommended Posts