Dies ist ein Material für Lernsitzungen. Ich werde es erklären, während ich dem Tutorial von django1.8 folge. https://docs.djangoproject.com/en/1.8/intro/tutorial01/
Da Version 1.4 die neueste Version des offiziellen japanischen Dokuments ist, gibt es einige Unterschiede, aber der allgemeine Ablauf ist der gleiche. Es ist daher eine gute Idee, ihn zu lesen. http://django-docs-ja.readthedocs.org/en/latest/intro/tutorial01.html
In der Erklärung der offiziellen Website lautet der Projektname "mysite". Wir werden es als "Tutorial" -Projekt erstellen.
Nachtrag (18.11.2015): Tutorial Tutorial wurde erstellt. → Tutorial-Zusammenfassung
OS:Mac OSX10.11 python:3.4.2 django:1.8.5
Stellen Sie den Quellcode des Tutorials auf github. Bitte beziehen Sie sich darauf, da wir die wichtigen Punkte markieren und so fein wie möglich festlegen werden. https://github.com/usa-mimi/tutorial
Wir werden mit dieser Dateistruktur fortfahren.
tutorial/ #Verzeichnis erstellt, wenn mit git geklont
├ .git/
├ .gitignore
├ ...
└ tutorial/ #Die Erklärung wird hier als root erklärt, sofern nicht anders angegeben.
├ manage.py #Geben Sie an, wann der Befehl django ausgeführt werden soll
├ ...
└ tutorial/
├ ...
├ urls.py #Projekt-URL
└ settings.py #Projektkonfigurationsdatei
Das oberste Tutorial-Verzeichnis ist auf Git ausgerichtet. Dies geschieht, um Dateien abzulegen, die nicht mit Django selbst zusammenhängen, z. B. README für Git und Einstellungen für die Bereitstellung.
In diesem Verzeichnis
(tutorial) $ django-admin startproject tutorial
Wenn Sie diesen Befehl ausführen
Die Dateien und Verzeichnisse unter Tutorial / Tutorial werden automatisch generiert.
Der Status, in dem das Tag "project_start" mit git verknüpft ist, ist der Status unmittelbar nach Ausführung des obigen Befehls.
Sofern nicht anders angegeben, basiert die Erklärung von hier aus auf tutorial / tutorial
</ b>.
https://docs.djangoproject.com/en/1.8/intro/tutorial01/#creating-a-project
./manage.py Diese Datei wird angegeben, wenn verschiedene Vorgänge in der Befehlszeile ausgeführt werden. Wenn Sie einen Server starten, eine Datenbank migrieren oder einen selbst erstellten Befehl ausführen, übergeben Sie den Befehl an diese Datei und führen Sie ihn aus.
$ python manage.py runserver
$ python manage.py migrate
Es ist so.
Da manage.py
Ausführungsberechtigung hat
Sie können auch "
Wenn kein Argument übergeben wird, wird eine Liste der Befehle angezeigt, die ausgeführt werden können.
https://docs.djangoproject.com/en/1.8/ref/django-admin/
$ ./manage.py
Traceback (most recent call last):
File "./manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
tutorial/settings.py
Wenn Sie es ausführen und die folgende Ausgabe erhalten, ist django
nicht installiert. Erstellen Sie eine virtuelle Umgebung und installieren Sie django, oder verwenden Sie den Befehl workon
, um die virtuelle Umgebung aufzurufen. Dies ist die Projekteinstellungsdatei. Legen Sie verschiedene Einstellungen fest, z. B. aktivierte Apps, Middleware, DB-Verbindungseinstellungen und verschiedene Verzeichnisse. Wenn Sie die Einstellungselemente im Detail kennen möchten, besuchen Sie bitte die offizielle Website.
https://docs.djangoproject.com/en/1.8/topics/settings/
tutorial/urls.py Dies ist die URL-Einstellung des Servers. Schauen Sie sich die angeforderte URL an und schreiben Sie in diese Datei, welche Ansicht (später beschrieben) die Antwort zurückgibt. Es wird in settings.py als ROOT_URLCONF angegeben.
Offizielle Erklärung → https://docs.djangoproject.com/de/1.8/topics/http/urls/
Dokument → https://docs.djangoproject.com/de/1.8/intro/tutorial01/#database-setup
Quelle → project_start
Tag
Folgen wir dem Tutorial und erstellen als nächstes eine Datenbank.
Welche Datenbank verwendet werden soll, ist in der Einstellungsdatei (tutorial / settings.py
) beschrieben.
Öffnen Sie die Einstellungsdatei und sehen Sie sich in Zeile 77 um.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Standardmäßig wird "sqlite3" für das oben Genannte im selben Verzeichnis wie "manage.py" verwendet.
Wir sollen eine DB-Datei namens db.sqlite3
verwenden.
Bei der SQLite-Engine ist NAME der Pfad zur SQLite-Datei.
BASE_DIR zeigt auf das Verzeichnis, in dem sich manage.py befindet.
os.path.join
ist eine Funktion, die Pfade mit einem Trennzeichen entsprechend dem System verbindet.
Wenn Sie einen MySQL-Server oder einen Postgresql-Server verwenden möchten, schreiben Sie diese Datei wie folgt neu.
#MySQL-Server
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
#Postgresql-Server
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
sqlite ist eine einfache Datenbank, die die Datenbank als Datei verwaltet. Es eignet sich sehr gut für die Erstellung von Prototypen, da kein Server vorbereitet werden muss und Sie die Datenbank einfach durch Löschen der Datei löschen können. Der Zugriff ist jedoch langsamer als bei einem normalen DB-Server und kann beim gleichzeitigen Zugriff zu Problemen führen. Verwenden Sie
mysql
oderpostgresql
, um das abgeschlossene Programm auszuführen. Im Falle eines Mac wird es standardmäßig installiert, aber im Fall von Windows scheint es, dass es manuell installiert werden muss.
Bitte beziehen Sie sich auf die URL der Installationsreferenzseite. http://www.dbonline.jp/sqliteinstall/install/index1.html
Nachdem Sie die Datenbank festgelegt haben, erstellen wir die Datenbank (fügen Sie eine Tabelle hinzu).
Der Befehl zum Erstellen einer Datenbank lautet "migrieren".
$ ./manage.py migrate
Wenn Sie MySQL oder PostgresQL verwenden, müssen Sie möglicherweise im Voraus eine leere Datenbank vorbereiten. Denken Sie bei der Verwendung von sqlite3 an nichts. Wenn Sie den Befehl ausführen, wird eine Datei erstellt.
Wenn Sie den Befehl ausführen, ohne die Einstellungen zu berühren, wird eine Tabelle erstellt, in der die zur Authentifizierung verwendeten Benutzerinformationen und Sitzungsinformationen gespeichert werden.
$ ./manage.py migrate
Operations to perform:
Synchronize unmigrated apps: messages, staticfiles
Apply all migrations: contenttypes, auth, sessions, admin
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.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 sessions.0001_initial... OK
Bis django 1.6 wurde die Datenbank mit dem Befehl
syncdb
initialisiert. Wenn dieser Befehl ausgeführt wird, werden der Befehl "migrieren" und der unten beschriebene Befehl "createuperuser" ausgeführt. Es wird eine Bewegung sein, die kontinuierlich ausgeführt wird. Ab django1.8 bleibt der Befehl erhalten und kann ausgeführt werden, ist jedoch seit django1.7 offiziell veraltet.
Bitte beachten Sie, dass die japanische Dokumentation Django 1.4 ist und in
syncdb
erklärt wird.
Dokument → https://docs.djangoproject.com/de/1.8/intro/tutorial01/#the-development-server
Quelle → project_start
Tag
Das Django-Framework verfügt auch über eine Serverfunktion, sodass während der Entwicklung kein dedizierter Server vorbereitet werden muss. Der auszuführende Befehl lautet "runserver". Bei der Ausführung verwendet der Entwicklungsserver standardmäßig Port 8000. In diesem Zustand können Sie den Vorgang überprüfen, indem Sie mit einem Browser auf http: // localhost: 8000 / zugreifen.
$ ./manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
October 31, 2015 - 08:55:38
Django version 1.8.5, using settings 'tutorial.settings'
Starting development server at http://127.0.0.1:8000/ #← Adresse beim Start
Quit the server with CONTROL-C.
[31/Oct/2015 09:06:54] "GET / HTTP/1.1" 200 1767 #← Wird angezeigt, wenn mit einem Browser darauf zugegriffen wird
Der Standardbildschirm wird angezeigt, da nichts erstellt wurde.
Wenn Sie die Portnummer ändern möchten Geben Sie die Portnummer als Argument an, z. B. "$ ./manage.py runserver 8080". Wenn Sie von einem PC im selben LAN aus zugreifen möchten Wenn Sie so etwas wie "$ ./manage.py runserver 0.0.0.0: 8000" schreiben Sie können über dasselbe LAN darauf zugreifen. Überprüfen Sie die IP des Computers mit Befehlen wie "ipconfig" und "ifconfig".
Wenn Sie das Programm ändern, während Sie auf dem Runserver ausgeführt werden, wird django automatisch neu gestartet. Sie müssen das Terminal, auf dem der Server ausgeführt wird, nicht mitbringen, stoppen und starten. Wenn Sie jedoch ein neues Vorlagenverzeichnis hinzufügen, wird es möglicherweise nicht automatisch geladen. Seien Sie also vorsichtig.
Dokument → https://docs.djangoproject.com/de/1.8/intro/tutorial01/#creating-models
Source → start_project
tag → add_app_4_database_migration
tag
Wir werden endlich Anwendungen hinzufügen. Das Tutorial erklärt, wie Sie ein Modell am Beispiel einer Abstimmungs-App namens "Umfragen" erstellen.
Vorher werde ich den Ablauf der Verwendung der Anwendung mit Django erläutern.
Fügen Sie eine Anwendung mit "$ ./manage.py startapp appname" hinzu.
Beschreiben Sie das in der Anwendung verwendete Modell (Datenbanktabelle) in appname / models.py
.
Fügen Sie die erstellte App zu project / settings.py
hinzu
Datenbankaktualisierung
Beschreiben Sie die Modellanzeige und -operationen (Hinzufügen, Bearbeiten usw.) in appname / views.py
.
Hier wird auch das zu verwendende HTML vorbereitet.
Schreiben Sie appname / urls.py
und verknüpfen Sie die URL mit Ansichten
Lesen Sie appname / urls.py
aus project / urls.py
.
1 bis 4 werden in diesem Tutorial durchgeführt. 5 und höher wird in Tutorial 3 erklärt. (Tutorial 2 handelt vom "Verwaltungsbildschirm") Das Quell-Tag wird im Format "add_app_x" angehängt.
Führen Sie den Befehl startapp von manage.py aus. Ein Verzeichnis mit dem App-Namen und einigen Dateien wird automatisch erstellt.
$ ./manage.py startapp polls
$ tree polls
polls
├── __init__.py
├── admin.py #Dateien, die sich auf die Verwaltungssite beziehen
├── migrations #Es wird automatisch generiert, berühren Sie es also nicht
│ └── __init__.py
├── models.py #Datei, die Tabelleninformationen und -vorgänge beschreibt
├── tests.py #Bearbeiten Sie diese Datei, wenn Sie einen Test schreiben möchten
└── views.py #Fügen Sie Funktionen hinzu, die Anforderungen empfangen und Antworten zurückgeben
In Tutorial 3 werden zusätzlich "forms.py", "templates /", "urls.py" manuell hinzugefügt.
Lassen Sie uns polls / models.py
nach dem Tutorial neu schreiben.
Eine Klasse, die durch Erben der Klasse "models.Model" erstellt wurde, ist eine Klasse, die eine DB-Tabelle darstellt.
Die mit der Instanz models. ~ Field
festgelegten Eigenschaften repräsentieren die Spalten der Tabelle.
Der Eigenschaftsname ist der Spaltenname der Tabelle.
Im Tutorial werden die Tabelle "Frage" und die Tabelle "Auswahl" festgelegt.
polls/models.py
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
Obwohl in diesem Lernprogramm nicht gezeigt, können Sie das Verhalten der Klasse auf verschiedene Arten anpassen, indem Sie die Meta-Klasse festlegen. Dokumente → https://docs.djangoproject.com/de/1.8/ref/models/options/
Sie können die Standardreihenfolge für die Datenerfassung angeben und den Namen der erstellten Tabelle ändern.
Standardmäßig wird eine Tabelle mit dem Namen "appname_modelname" erstellt. Im Tutorial-Beispiel wird eine Tabelle mit "polls_question" und "polls_choice" erstellt. Wir empfehlen, den Tabellennamen nur zu ändern, wenn ein besonderer Grund vorliegt.
Weitere nützliche Einstellungen sind das Umbenennen auf der im nächsten Lernprogramm beschriebenen Administrationsseite. Festlegen eindeutiger Einschränkungen für mehrere Felder (z. B. Begrenzung durch "Datum" und "Element").
Die Beschreibungsmethode lautet wie folgt
class Question(models.Model):
class Meta:
app_label = 'polls'
verbose_name = 'Frage'
table_name = 'polls_question'
Informationen zu den Feldern finden Sie im Originaldokument. Dokumente → https://docs.djangoproject.com/de/1.8/ref/models/fields/#field-types
Das Äquivalent eines allgemeinen DB-Spaltentyps sollte abgedeckt werden. Zusätzlich zu einigen allgemeinen Optionen verfügt das Feld über feldspezifische Optionen und erforderliche Elemente. Beispielsweise repräsentiert "CharField" einen allgemeinen DB-Zeichentyp. Da für den Zeichentyp die Anzahl der anzuzeigenden Zeichen erforderlich ist, erfordert das "CharField" von django auch das Argument "max_length".
ForeignKey
ist ein etwas spezielles Feld, das eine Beziehung zu einem anderen Modell ausdrückt. Der Spaltentyp ist der gleiche Typ wie der Primärschlüssel des Modells mit der angehängten Beziehung, und der Spaltenname ist der Eigenschaftsname, dem "_id" hinzugefügt wurde. Im Tutorial-Beispiel wird eine Spalte vom Typ Integer mit dem Namen question_id erstellt. (Da der Standardprimärschlüssel der Integer-Typ ist)
Die Klasse wird aufgrund der Beziehung zu dem in derselben Datei definierten Modell direkt an das Argument übergeben. Wenn Sie die Beziehung zu dem in einer anderen Datei definierten Modell einfügen möchten, geben Sie das Modell an, um die Beziehung mit einer Zeichenfolge im Format "app.model" einzufügen. Beispiel:
question = models.ForeignKey ('polls.Question')
Dokument → https://docs.djangoproject.com/de/1.8/intro/tutorial01/#activating-models
Durch einfaches Hinzufügen einer App mit "startapp" wird diese Anwendung nicht aktiviert.
In der Liste der Apps, die in tutorial / settings.py
verwendet werden sollen, befindet sich ein Element. Fügen Sie also die erstellte App dort hinzu.
Die einzustellende Variable ist ein Taple mit dem Namen "INSTALLED_APPS" in der Nähe von Zeile 33 von settings.py.
tutorial/settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls', #← Fügen Sie dies hinzu
)
Dieses Mal habe ich meine eigene "Umfragen" -App hinzugefügt. Wenn Sie jedoch eine vorgefertigte Django-Anwendung mit "Pip" usw. hinzufügen möchten, fügen Sie den App-Namen auch zu INSTALLED_APPS hinzu. Wenn Sie es hier hinzufügen, wird es für die Migration, Vorlagen, Tests usw. geladen.
Dokument → https://docs.djangoproject.com/de/1.8/intro/tutorial01/#activating-models
(Wie 3. Anwendung hinzufügen
)
Führen Sie nach dem Ändern von settings.py den Befehl make migrations
aus.
Dieser Befehl erkennt Änderungen im Modell jeder Anwendung und erstellt automatisch eine Migrationsdatei.
Durch Ausführen dieses Befehls zum Erstellen einer Migrationsdatei und anschließendes Ausführen des Migrationsbefehls
Reflektieren Sie die Modelländerung (= Tabelle) in der DB.
$ ./manage.py makemigrations
Migrations for 'polls':
0001_initial.py:
- Create model Choice
- Create model Question
- Add field question to choice
Wenn sich etwas ändert, wird es automatisch erkannt und eine Migrationsdatei erstellt. Diesmal handelt es sich nicht um eine Tabellenaddition, aber wenn der Standardwert beim Hinzufügen eines Felds nicht festgelegt wird Sie werden gefragt, wie der Standardwert lauten soll
$ ./manage.py migrate
Operations to perform:
Synchronize unmigrated apps: messages, staticfiles
Apply all migrations: admin, auth, polls, contenttypes, sessions
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
Rendering model states... DONE
Applying polls.0001_initial... OK
Durch Ausführen des Migrationsbefehls werden die Einstellungen in der Datenbank angezeigt. Welcher Migrationsbefehl ausgeführt wurde, wird in der Tabelle
django_migrations
aufgezeichnet.
-- Im ursprünglichen Tutorial wird das Modell danach angepasst und in der Shell ausgeführt. Ich werde es in diesem Tutorial weglassen. Die Modellanpassung wird im nächsten Tutorial erläutert. https://docs.djangoproject.com/en/1.8/intro/tutorial01/#playing-with-the-api
Recommended Posts