Python Django Tutorial (1)

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

Umgebung

OS:Mac OSX10.11 python:3.4.2 django:1.8.5

Quellcode

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

Dateiorganisation

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

Beschreibung der automatisch erstellten Datei

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 ". / Managing.py" anstelle von " python manage.py" schreiben.

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/

Datenbank erstellen

Dokument → https://docs.djangoproject.com/de/1.8/intro/tutorial01/#database-setup Quelle → project_start Tag

Datenbankeinstellungen

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',
    }
}

Ergänzung: SQLite

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 oder postgresql, 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

Datenbankerstellung

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

Ergänzung: syncdb

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.

Bestätigung des Serverstarts

Dokument → https://docs.djangoproject.com/de/1.8/intro/tutorial01/#the-development-server Quelle → project_start Tag

Überprüfen Sie mit dem Browser

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

Kobito.uICdzG.png 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".

Ergänzung: Automatisches Laden des Runservers

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.

App hinzufügen

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.

  1. Fügen Sie eine Anwendung mit "$ ./manage.py startapp appname" hinzu.

  2. Beschreiben Sie das in der Anwendung verwendete Modell (Datenbanktabelle) in appname / models.py.

  3. Fügen Sie die erstellte App zu project / settings.py hinzu

  4. Datenbankaktualisierung

  5. Beschreiben Sie die Modellanzeige und -operationen (Hinzufügen, Bearbeiten usw.) in appname / views.py. Hier wird auch das zu verwendende HTML vorbereitet.

  6. Schreiben Sie appname / urls.py und verknüpfen Sie die URL mit Ansichten

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

1. Umfrage-App hinzufügen

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.

2. Modellbeschreibung

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)

Ergänzung: Modell

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'

Ergänzung: Feld

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

3. Anwendung hinzufügen

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.

4. Datenbankaktualisierung

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

-- Zum nächsten Tutorial

Tutorial-Zusammenfassung

Recommended Posts

Python Django Tutorial (5)
Python Django Tutorial (8)
Python Django Tutorial (6)
Python Django Tutorial (7)
Python Django Tutorial (1)
Python Django Tutorial Tutorial
Python Django Tutorial (3)
Python Django Tutorial (4)
Zusammenfassung des Python Django-Tutorials
Python-Tutorial
Python Django Tutorial Cheet Sheet
Django Tutorial Memo
Starten Sie das Django Tutorial 1
Django 1.11 wurde mit Python3.6 gestartet
[Docker] Tutorial (Python + PHP)
Django Python Web Framework
Django Polymorphic Associations Tutorial
Django Oscar einfaches Tutorial
Django Python Verschiebungstabelle
Versuchen Sie Debian + Python 3.4 + django1.7 ……
Python OpenCV Tutorial Memo
Django Girls Tutorial Hinweis
Cloud Run Tutorial (Python)
Python Django CSS reflektiert
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Einführung in Python Django (2) Win
[Python-Tutorial] Kontrollstruktur-Tool
Python
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Python3 + Django ~ Mac ~ mit Apache
ToDo-Listenerstellung [Python Django]
Erste Schritte mit Python Django (1)
Fangen Sie mit Django an! ~ Tutorial ④ ~
Django
Erste Schritte mit Python Django (3)
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Installieren Sie Python 3.7 und Django 3.0 (CentOS)
[Python] Persönliches Tutorial zum Entscheidungsbaum
GAE + Python + Django süchtig machende Geschichte
Einführung in Python Django (6)
Erste Schritte mit Python Django (5)
Bis zur Veröffentlichung von Python [Django] de Web Service [Tutorial Teil 1]
Gehirnwellenanalyse mit Python: Python MNE-Tutorial
Python Practice_Virtual Environment Setup ~ Django-Installation
Erstellen Sie eine neue Anwendung mit Python, Django
Python + Django + Scikit-Learn + Mecab (2) mit Heroku
Führen Sie python3 Django1.9 mit mod_wsgi aus (deploy)
Django Girls Tutorial Zusammenfassung Erste Hälfte
Stolpern Sie beim Django 1.7-Tutorial
Stellen Sie das Django-Lernprogramm für IIS bereit ①
Installieren Sie das Python Framework Django mit pip
Einführung in Python Django (2) Mac Edition
[Python Tutorial] Eine einfache Einführung in Python
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 5 ~
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 1, 2, 3 ~
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 6 ~
Lernverlauf für die Teilnahme an der Team-App-Entwicklung mit Python ~ Django Tutorial 7 ~
Django Crispy Tutorial (Umgebungskonstruktion auf Mac)
Kafka Python