[PYTHON] Les débutants de Django créent des applications simples 2

introduction

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.)

Table de série pour les débutants pour créer des applications simples

environnement

supposition

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é.

1. Créez urls.py

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.

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.

Code dans myapp / urls.py

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'),
]

Remarque sur urls.py

L'explication du code est la suivante ... juste un rappel. C569F59B-714E-403C-9E99-CF594A52FBDC.jpeg

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

  1. Adresse d'une partie de `` '' ou movie / <int: pk> `
  2. ʻIndexViewouMovieDetailView` (car il sera décrit plus tard dans views.py)
  3. La partie après le nom = telle que ʻindex 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.

urls.py Résumé

Écrivez les trois codes suivants dans la fonction de chemin

  1. Déterminez l'adresse
  2. Choisissez la vue à utiliser
  3. Donnez un nom qui résume les adresses

2. Créez views.py

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.

Implémentation dans une vue basée sur les classes

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.

Views.py code

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.

Remarques sur views.py

79ED0F5D-22EC-4DD4-BF16-FD761F622640.jpeg

views.py Résumé

【L'ensemble】

  1. Importez le générique pour utiliser la vue basée sur les classes
  2. Importez le modèle (Movie, Director, etc.) créé par models.py

【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

3. Créez un 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.

Code dans index.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.

Résultat de index.html (écran de liste)

indexpicturecrop.png

Remarque sur index.html

0D505FE9-A3E7-4F95-98D7-6C23DD358983.jpeg

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

code en détail.html

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

Résultat de detail.html (écran de détail)

detailpicturecrop.png

Remarque sur detail.html

94ADC53D-A192-4282-AEBE-ADFBECD067D9.jpeg

Résumé du modèle

  1. Frappez dans la tête où tirer le nom écrit dans quel fichier
  2. Utilisez correctement les trois parenthèses de Django, Python et HTML et combinez-les dans un modèle.
  1. Il est important de déterminer s'il s'agit d'une référence directe ou d'une référence inverse. Utilisez related_name pour la référence inverse

Épilogue

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

Les débutants de Django créent des applications simples 3
Les débutants de Django créent des applications simples 1
Les débutants de Django créent des applications simples 2
Les débutants de Django créent des applications simples 5
Les débutants de Django créent des applications simples 4
Créer les paramètres initiaux et les applications de personnel dans Django
Créer un planning Django
tutoriel simple django oscar
Créer une liste Django Todo
Créer une API avec Django
Créer un serveur REST (simple)
Création de liste de tâches [Python Django]
Créer une page d'accueil avec django
Shell pour créer un projet django
Créer un écran de connexion Django
Créez votre propre middleware Django
Créer un serveur textlint simple
Créer et lister des modèles Django
(Pour les débutants) Essayez de créer une API Web simple avec Django
Hello World (débutant) avec Django
Créez une API d'intégration sociale pour les applications smartphone avec Django
Étapes pour créer un projet Django
Django débutant a essayé de créer l'environnement
[Pour les débutants] Django -Construction d'environnement de développement-
Créer une nouvelle application utiliser python, django
[Django] Créez votre propre page d'erreur 403, 404, 500
Créer un téléchargeur de fichiers avec Django
Créer un bot LINE avec Django