[PYTHON] Django-Anfänger erstellen einfache Apps 2

Einführung

Fortsetzung von Django-Anfänger erstellen einfache Apps 1. Wir werden komplizierte und problematische Dinge so weit wie möglich reduzieren, eine vereinfachte Webanwendung erstellen und uns darauf spezialisieren, zu lernen, wie Django funktioniert. Verstehe nur, was verbunden ist und wie es sich um das Backend bewegt. Wenn Sie CRUD (Erstellen, Lesen, Aktualisieren, Löschen) implementieren und sicher verschieben, erreichen Sie das Ziel. (Bitte fragen Sie mich nicht, ob es sich um eine Webanwendung handelt, obwohl ich keine Verbindung zum Internet herstellen kann.)

Serientabelle für Anfänger zum Erstellen einfacher Apps

Umgebung

Annahme

Der Projektname lautet config und der App-Name lautet myapp. Mit anderen Worten, die folgenden zwei Befehle wurden ausgeführt

Das Vorlagenverzeichnis befindet sich in derselben Hierarchie wie manage.py, und settings.py wurde ebenfalls geändert.

1. Erstellen Sie urls.py

Nachdem Sie eine Box (oder Tabelle) mit den Informationen in model.py haben, entscheiden Sie, wo diese Informationen abgelegt werden sollen. Schreiben Sie dazu zuerst den Code in config / urls.py.

Code in config / urls.py

config/urls.py


from django.contrib import admin
from django.urls import path, include #add include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.urls')), #Fügen Sie diese Zeile hinzu
]

path ('myapp /' ... bedeutet 127.0.0.1: 8000 / myapp / .myapp.urls in Klammern einschließen ist "detailliert in urls.py im myapp-Verzeichnis" Es bedeutet "yo". Als nächstes erstellen Sie myapp / urls.py. Erstellen und bearbeiten Sie die Datei selbst. Schreiben Sie zunächst den Code für diese beiden Adressen: index (Listenbildschirm), der die gesamte Liste anzeigt, und movie_detail (Detailbildschirm), der die Details des Films anzeigt, wenn Sie auf den Titel des Films klicken.

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

Ein Hinweis auf urls.py.

Die Erklärung des Codes lautet wie folgt ... nur eine Erinnerung. C569F59B-714E-403C-9E99-CF594A52FBDC.jpeg

Anfänger wissen nicht, welchen Code sie benötigen, wo sie können oder nicht. Was Sie selbst entscheiden können

  1. Adressieren Sie einen Teil von '' oder movie / <int: pk>
  2. Der Teil von IndexView oder MovieDetailView (da er später in views.py beschrieben wird)
  3. Der Teil nach name = wie index oder movie_detail

Über drei. Ansonsten sollten der Code und die Anweisungen von Django und Python von Anfang an nicht geändert werden.

urls.py Zusammenfassung

Schreiben Sie die folgenden drei Codes in die Pfadfunktion

  1. Bestimmen Sie die Adresse
  2. Entscheiden Sie, welche Ansicht verwendet werden soll
  3. Geben Sie einen Namen ein, der die Adressen zusammenfasst

2. Erstellen Sie views.py

Ich habe eine Box mit Informationen in models.py erstellt. Ich habe entschieden, wo (Adresse) in urls.py eingefügt werden soll. Als nächstes müssen Sie "die im Modell enthaltenen Informationen herausnehmen und sich auf das Einfügen vorbereiten", und views.py ist dafür verantwortlich.

Implementierung in klassenbasierter Ansicht

Apropos besser: Ansicht zur Funktion (Funktionsansicht) oder Klasse (Klassenansicht). Abschließend wird eine klassenbasierte Ansicht empfohlen. Sehr einfach zu schreibender Code. Für Anfänger ist es jedoch schwierig zu verstehen, wie man es benutzt, da nicht klar ist, was mit Blackboxing los ist. Wenn Sie das Dokument lesen und tiefer graben, können Sie sehen, dass es nichts mit einer Black Box zu tun hat, aber ich verstehe die weiter erläuterten Begriffe nicht, also bin ich krank. Im Gegenteil, die Ansichtsfunktion hat etwas mehr Code, aber Sie können sehen, wie es funktioniert. Dieses Mal möchte ich es mit Class Based View implementieren und versuchen, es mit der View-Funktion neu zu schreiben, wenn es abgeschlossen ist. Mit anderen Worten, in umgekehrter Reihenfolge des Tutorials. Da ich zuvor die Adressen des Listenbildschirms und des Detailbildschirms festgelegt habe, schreibe ich den Code, um die dort anzuzeigenden Informationen zu extrahieren und das Einfügen der Informationen vorzubereiten.

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'

Das ist es. Sehr viel weniger Code. Danach geht DetailView automatisch gut damit um. Das Memorandum lautet wie folgt.

Hinweise zu views.py

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

views.py Zusammenfassung

【Das ganze】

  1. Importieren Sie generisch, um die klassenbasierte Ansicht zu verwenden
  2. Importieren Sie das von models.py erstellte Modell (Film, Regisseur usw.)

【ListView】 3. Verwenden Sie das Abfrageset, um Informationen aus dem Modell abzurufen 4. Benennen Sie den Informationsblock mit context_object_name 5. Übergeben Sie die Informationen an die durch template_name angegebene HTML-Datei

【DetailView】 6. Entscheiden Sie, welches Modell die Informationen enthalten soll 7. Übergeben Sie die Informationen an die durch template_name angegebene HTML-Datei

3. Erstellen Sie eine Vorlage

Jetzt ist es Zeit, die Informationen richtig anzuzeigen. Eine Vorlagendatei ist eine HTML-Datei. Sehen Sie, wie Sie den Code schreiben und wie er aussieht. Erstellen Sie zuvor ein myapp-Verzeichnis im Vorlagenverzeichnis und eine HTML-Datei in diesem myapp-Verzeichnis. Die Verzeichnisstruktur ist wie folgt.

.
├── config
├── db.sqlite3
├── manage.py
├── myapp
├── myenv
├── static
└── templates
    └── myapp #Erstellen Sie eine HTML-Datei in diesem Verzeichnis
        └── index.html
        └── detail.html

Ursprünglich würde ich base.html erstellen, es mit {% block%} erweitern und so weiter, aber ich erstelle ehrlich index.html und detail.html.

Code in 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 %}

Wenn Sie also den Server ausführen und die Anzeige überprüfen, ist dies wie in der folgenden Abbildung dargestellt.

Ergebnis von index.html (Listenbildschirm)

indexpicturecrop.png

Hinweis zu index.html

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

Wenn Sie im Listenbildschirm auf den Link des Titelteils klicken, wird der Detailbildschirm angezeigt, der Code lautet jedoch wie folgt

Code in detail.html

templates/myapp/detail.html


<h1>{{ movie.title }}</h1>
<h2>{{ movie.director }}</h2>
<h3>{{ movie.watch_date }}Anzeigen</h3>

{% for log in movie.log.all %}
    <li>{{ log.text }}</li>
{% endfor %}

Wenn Sie das Ergebnis also auch mit runserver anzeigen, ist es wie in der folgenden Abbildung dargestellt

Ergebnis von detail.html (Detailbildschirm)

detailpicturecrop.png

Hinweis zu detail.html

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

Zusammenfassung der Vorlage

  1. Schlagen Sie in den Kopf, in welche Datei der eingegebene Name gezogen werden soll
  2. Verwenden Sie die drei Klammern von Django, Python und HTML richtig und kombinieren Sie sie zu einer Vorlage.
  1. Es ist wichtig zu bestimmen, ob es sich um eine Vorwärtsreferenz oder eine Rückwärtsreferenz handelt. Verwenden Sie related_name als umgekehrte Referenz

Nachwort

Solange Sie wissen, wo und wie sie verbunden sind, können Sie mit dieser Kombination Code schreiben und anzeigen. Es fiel mir schwer, den Zusammenhang im offiziellen Tutorial nicht zu kennen ... Übrigens haben die folgenden zwei Artikel (ich habe es geschrieben) den Zusammenhang des offiziellen Tutorials als Anfänger verstanden und zusammengefasst.

Selbst nach anderthalb Jahren konnte ich die Anfängerklasse nicht verlassen, indem ich wie eine Schildkröte ging (weinte) ... Wie auch immer, diesmal bekam ich den Read-Teil von CRUD (Erstellen, Lesen, Aktualisieren, Löschen). Nächstes Mal erstellen! Ich kann jedoch flirten und die Funktion Ansicht neu schreiben. Wenn Sie Fehler haben, würde ich mich über Ihre Anleitung freuen.

Recommended Posts

Django-Anfänger erstellen einfache Apps 3
Django-Anfänger erstellen einfache Apps 1
Django-Anfänger erstellen einfache Apps 2
Django-Anfänger erstellen einfache Apps 5
Django-Anfänger erstellen einfache Apps 4
Erstellen Sie erste Einstellungen und Mitarbeiter-Apps in Django
Erstellen Sie einen Django-Zeitplan
Django Oscar einfaches Tutorial
Django Todo Listenerstellung
Erstellen Sie eine API mit Django
Erstellen Sie einen (einfachen) REST-Server
ToDo-Listenerstellung [Python Django]
Erstellen Sie eine Homepage mit Django
Shell zum Erstellen eines Django-Projekts
Erstellen Sie einen Django-Anmeldebildschirm
Erstellen Sie Ihre eigene Django-Middleware
Erstellen Sie einen einfachen Textlint-Server
Erstellen und listen Sie Django-Modelle auf
(Für Anfänger) Versuchen Sie, mit Django eine einfache Web-API zu erstellen
Hallo Welt (Anfänger) mit Django
Erstellen Sie mit Django eine API für die soziale Integration von Smartphone-Apps
Schritte zum Erstellen eines Django-Projekts
Django-Anfänger versuchten, die Umgebung aufzubauen
[Für Anfänger] Django -Entwicklungsumgebung Bau-
Erstellen Sie eine neue Anwendung mit Python, Django
[Django] Erstellen Sie Ihre eigene 403, 404, 500-Fehlerseite
Erstellen Sie mit Django einen Datei-Uploader
Erstellen Sie mit Django einen LINE-Bot