No. | Titel | |
---|---|---|
1 | Für mich als Django-Anfänger (1)-Projekt App- | |
2 | Für mich als Django-Anfänger (2)-Was ist MTV?- | |
3 | Für mich als Django-Anfänger (3)-Hallo Welt!- | |
4 | Für mich als Django-Anfänger (4)-Erstellung einer Memo-App- | ☆ |
Letztes Mal hat "Hello World!" Mit Django verifiziert. Dieses Mal erstellen wir eine einfache Memo-App mit allen ** MTV **!
Das Ziel dieses Mal ist es, das Verständnis von ** Modell ** und ** Vorlage **, die beim letzten Mal nicht verwendet wurden, durch Erstellen einer Memo-App zu vertiefen. Basierend auf dem, was ich bisher gelernt habe, würde ich mich sehr freuen, wenn ich den Ablauf der Erstellung einer Webanwendung mit Django verstehen könnte!
Wir werden es gemäß dem folgenden Ablauf erstellen.
** Modell ** beschreibt die Definition der Daten, die in der Datenbank gespeichert werden sollen. Lass es uns schreiben.
app1/models.py
from django.db import models
# Create your models here.
class Memo(models.Model):
title = models.CharField (verbose_name = 'title', max_length = 100) text = models.TextField (verbose_name = 'content') created_date = models.DateTimeField (verbose_name = 'Erstellungsdatum', auto_now_add = True)
def __str__(self):
return self.title
Schauen wir uns jeden an.
--Memo ist der Name des Modells. Modellnamen werden großgeschrieben. --title, text, created_date sind Felder, die in der Datenbank registriert werden sollen.
models.CharField
: Ein Feld, das die Länge des Textes definiert. Es ist "max_length = 100" in (). Das heißt, bitte schreiben Sie den Titel innerhalb von 100 Zeichen.
--models.TextField
: Dies ist ebenfalls Text, es wird jedoch keine Länge angegeben.
--models.DateTimeField
: Dies ist ein Datums- und Zeitfeld. Durch Setzen von "auto_now_add = True" wird automatisch die Zeit eingegeben, zu der die Daten erstellt wurden.
--verbose_name
gibt die Anzeige auf dem Verwaltungsbildschirm an. Der Verwaltungsbildschirm wird später beschrieben.Dies ist das Ende der Modelldefinition. Es gibt viele andere Arten von Feldern im Modell. Wenn Sie also neugierig sind, schauen Sie sich die [offizielle Dokumentation] an (https://docs.djangoproject.com/ja/3.0/contents/). ..
Nachdem das Modell definiert wurde, müssen Sie einen ** Migrationsprozess ** durchführen, um diese Informationen in der Datenbank wiederzugeben. Dies ist ein übliches oder traditionelles Ereignis und muss immer dann durchgeführt werden, wenn ein Modell hinzugefügt oder geändert wird.
Führen Sie die folgende Verarbeitung aus, um die Modelldefinition in der Datenbank wiederzugeben.
Führen Sie den folgenden Befehl an der Eingabeaufforderung aus.
C:\Users\User_name\myapp>python manage.py makemigrations
Dann sehen Sie die folgende Ausgabe. Zu diesem Zeitpunkt wurde eine Datei für die Migration erstellt, die jedoch noch nicht in der Datenbank enthalten ist.
Migrations for 'app1':
app1\migrations\0001_initial.py
- Create model Memo
Fahren Sie mit dem folgenden Befehl fort:
C:\Users\User_name\myapp>python manage.py migrate
Dann sollten Sie die folgende Ausgabe sehen.
Operations to perform:
Apply all migrations: admin, app1, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying app1.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
Mein Großer ist mit genau diesem komplett! Das Memo-Modell wurde erfolgreich in der Datenbank wiedergegeben! ... aber es ist schwer vorstellbar, was tatsächlich passiert ist. Um ein solches Problem zu lösen, haben wir heute einen speziellen Artikel vorbereitet.
Django wird standardmäßig mit einer Administrationsseite geliefert. Hier möchte ich die Daten auf der Administratorseite in der Datenbank speichern und sehen, was bei der vorherigen Migration passiert ist.
Starten Sie den Server sofort und greifen Sie auf die Administratorseite zu!
C:\Users\User_name\myapp>python manage.py runserver
Nachdem Sie überprüft haben, ob der Server gestartet wurde, gehen Sie zu "http: //127.0.0.1: 8000 / admin". Dann erhalten Sie die folgende Seite.
Hmm? Oh, Passwort für den Benutzernamen? Ich habe so etwas nicht. Das stimmt, aber mach dir keine Sorgen. Dies kann auch einfach über die Eingabeaufforderung erstellt werden. Trennen Sie den Server einmal oder bereiten Sie eine neue Konsole vor und führen Sie den folgenden Befehl aus.
C:\Users\User_name\myapp>python manage.py createsuperuser
Username (leave blank to use 'User_name'): memo_user
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
Es wird zeilenweise von oben angezeigt. Wenn Sie die Eingabetaste drücken, ohne einen Benutzernamen einzugeben, wird Ihr 'Benutzername' registriert. Die Benutzerregistrierung ist abgeschlossen, wenn Sie die E-Mail-Adresse und das Passwort korrekt eingegeben haben. Starten Sie den Server erneut und melden Sie sich auf der Seite / admin an.
Dies ist die Administrationsseite, die standardmäßig mit Django geliefert wird. Es ist einfach und raffiniert, nicht wahr? Hmm, ich mag es.
Um das Modell auf der Administratorseite zu überprüfen, müssen Sie es in app1 / admin.py
festlegen.
app1/admin.py
from django.contrib import admin
aus .models importieren Memo # Memo importieren
# Register your models here.
admin.site.register (Memo) # Hinzufügen
Nachdem Sie diese geschrieben haben, kehren Sie bitte zur Administratorseite zurück und aktualisieren Sie die Seite. Ich habe das Modell meiner Memo-App bestätigt! Gehen Sie nun zur Memo-Seite und erstellen Sie oben rechts eine Notiz aus ADD MEMO! Was für ein Memo hast du geschrieben? Nein, das war mir egal (lacht) Wenn Sie zur Memoseite zurückkehren, können Sie sehen, dass das Memo hinzugefügt wurde. Auf diese Weise können Sie mit Django Daten zur Datenbank hinzufügen und deren Inhalt über die Administratorseite überprüfen. Anscheinend scheint dies eine lächerlich nützliche Funktion zu sein, und es ist notwendig, die Datenbanksprache über die Konsole zu schreiben und zu bedienen oder eine Administratorseite von Grund auf neu zu erstellen. Um ehrlich zu sein, entwickle ich die Datenbank noch. Daher ist es sehr hilfreich, die Daten visuell so bearbeiten zu können. Vielen Dank, Django.
Von hier aus setzen wir ** View **. View ruft auf Anfrage Daten aus der Datenbank ab und entscheidet, wie sie auf dem Bildschirm angezeigt werden sollen!
app1/views.py
from django.shortcuts import render
aus .models importieren Memo # Memo importieren
# Create your views here.
def memo_list(request):
memos = Memo.objects.all()
context = {'memos': memos}
return render(request, 'app1/memo_list.html', context)
Dieses Mal werde ich die Liste der Memos auf dem Bildschirm anzeigen. Dazu müssen wir die Daten für das Memo-Modell abrufen.
--memos = Memo.objects.all ()
: Ruft alle Objekte (Titel, Inhalt, Erstellungsdatum) von Memo ab.
--context = {'memos': memos}
: Machen Sie die erforderlichen Informationen zu einem Wörterbuch und übergeben Sie sie an die Vorlage.
render (Anfrage, 'app1 / memo_list.html', Kontext)
: Übergeben Sie context
an app1 / memo_list.html
. Die memo_list.html
hier ist die Vorlage. (Memo_list.html
wird später erstellt)Damit sind die Ansichtseinstellungen abgeschlossen. Es ist möglich, die Bedingungen beim Erfassen von Daten einzugrenzen, aber dieses Mal werden wir alle mit Simple is Best erfassen. Offizielles Dokument ist hilfreich, um die Daten abzurufen.
Es ist endlich vorbei. Die Vorlage wird standardmäßig nicht bereitgestellt, daher müssen Sie sie selbst vorbereiten. Bereiten Sie unter der App ein Verzeichnis mit dem Namen templates vor und bereiten Sie darin ein Verzeichnis mit dem Namen app1 vor. Dann legen Sie die HTML-Datei in App1. Den Grund für die Verwendung dieser Komposition finden Sie in diesem Artikel von narito blog.
myapp/templates/app1/memo_list.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Memo</title>
</head>
<style>
.app-name {
text-align: center;
}
.contents {
margin-left: 300px;
margin-right: 300px;
}
</style>
<div class='app-name'>
<! - Inhalt des Memo-> {% for memo in memos %}
Erstellungsdatum: {{memo.created_date}} p>
{{ memo.text | linebreaks }}