Es ist eine gute Idee, "Wenn Sie von nichts anfangen: Übersicht" und "Tutorial hier: Teil 1-7" zu lesen, aber Sie können diesen Kurs zuerst ausprobieren.
Erstellen wir eine App, die einfache Bücher verwaltet.
Erstellen Sie zunächst ein Projekt namens mybook. Verwenden Sie dazu den Befehl django-admin startproject mybook
.
Wenn Sie versuchen, ein Projekt mit PyCharm zu erstellen, wird anscheinend ein Ordner mit dem Namen PycharmProjects erstellt, daher werde ich ihn darunter erstellen
Stellen Sie sicher, dass Sie sich in der virtuellen Umgebung von (env1) befinden. Wenn Sie bereits haben, benötigen Sie nicht die folgenden Mac
workon env1
und WindowsScripts \ enabled
.
Für Mac
$ workon env1
(env1) $ cd ~/PycharmProjects/
(env1) $ django-admin startproject mybook
Für Windows,
C:¥Users¥hoge>cd Documents¥env1
C:¥Users¥hoge¥Documents¥env1> Scripts¥activate
(env1) C:¥Users¥hoge¥Documents¥env1> cd C:¥Users¥hoge¥PycharmProjects
(env1) C:¥Users¥hoge¥PycharmProjects> django-admin startproject mybook
Von hier aus kehrt die Erklärung zur Mac-Annahme zurück. Für Windows lesen Sie bitte jede Umgebung.
Datei erstellt in ~ / PycharmProjects /
mybook/
manage.py
mybook/
__init__.py
asgi.py
settings.py
urls.py
wsgi.py
Gehen Sie in das mybook-Verzeichnis.
$ cd mybook
Öffnen wir das generierte Projekt mit PyCharm.
Unter Windows ist dies C: \ Users \ hoge \ Pycharm Projects \ mybook.
Unter Windows ist dies C: \ Users \ hoge \ Documents \ env1 \ python.exe.
Die Datenbankeinstellungen befinden sich in "mybook / settings.py", aber standardmäßig ist bereits SQlite3 verwendet.
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
:
# Database
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Stellen Sie beim Betrachten von "mybook / settings.py" die Sprache und Zeitzone auf Japan ein.
#
Bedeutet die Zeile, die Sie auskommentiert haben. Auskommentieren Positionieren Sie es für Mac in einer Zeile (wenn mehrere Zeilen vorhanden sind, wählen Sie die Zeile aus) und befehlen Sie +/-. Für Windows Strg + /. Hmm bequem.
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ja'
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Tokyo'
Wenn Sie den Befehl zum Migrieren der Datenbank eingeben, wird eine Datei mit dem Namen "db.sqlite3" im Verzeichnis direkt unter dem Projekt erstellt.
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, 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 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
Erstellen Sie einen Superuser mit dem folgenden Befehl.
$ python manage.py createsuperuser
Nutzername(leave blank to use 'hoge'): admin
Mail Adresse: [email protected]
Password: hogefuga
Password (again): hogefuga
Superuser created successfully.
Beantworten Sie unterwegs die folgenden Fragen.
Starten Sie den Entwicklungsserver mit dem Befehl "python manage.py runserver", um festzustellen, ob das Projekt funktioniert.
$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
January 08, 2020 - 16:20:02
Django version 3.0.2, using settings 'mybook.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Versuchen Sie, mit Ihrem Browser auf http://127.0.0.1:8000/ zuzugreifen.
Das Ende des Entwicklungsservers ist "control + c".
Drücken Sie einfach die Fehlermarkierung oben rechts auf dem Bildschirm. Alternativ können Sie im Menü Ausführen> Debuggen ..> Mybook auswählen.
Es ist in Ordnung, wenn die folgende Anzeige unten angezeigt wird. Wenn Sie anhalten möchten, drücken Sie das rote Quadrat.
Sie können Haltepunkte setzen und Variablen überprüfen, indem Sie wie bei einer allgemeinen IDE auf die rechte Seite der Zeilennummer des Codes klicken.
Nach dem Stoppen ist das Debug-Fenster im Weg, drücken Sie also die Kollaps-Taste.
Lassen Sie uns unter dem Projekt eine Anwendung namens cms erstellen.
cms ist wie ein Inhaltsverwaltungssystem, wie die Hauptwartung. Eine Anwendung ist eine Funktionseinheit, aus der ein Projekt besteht, und kann in einigen Fällen wiederverwendet werden.
Erstellen Sie es mit dem folgenden Befehl.
$ python manage.py startapp cms
Die folgenden Dateien wurden im Verzeichnis des mybook-Projekts erstellt.
mybook/
cms/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
manage.py
mybook/
:
:
Definieren Sie das Datenmodell, das Sie in der Datenbank definieren möchten, in cms / models.py
.
Wenn Sie vor dem Unterricht nicht zwei Zeilen öffnen, wird eine Wellenlinie angezeigt und Sie werden gewarnt. Es ist ein Überprüfungsmechanismus für den Codestil namens pep8. Wenn das Ende des Codes nicht nur mit einem Zeilenumbruch endet, werden wieder Wellenlinien angezeigt und Sie werden wütend. Seien Sie also vorsichtig.
from django.db import models
class Book(models.Model):
"""Bücher"""
name = models.CharField('Buchtitel', max_length=255)
publisher = models.CharField('der Herausgeber', max_length=255, blank=True)
page = models.IntegerField('Seitenzahl', blank=True, default=0)
def __str__(self):
return self.name
class Impression(models.Model):
"""Impressionen"""
book = models.ForeignKey(Book, verbose_name='Bücher', related_name='impressions', on_delete=models.CASCADE)
comment = models.TextField('Kommentar', blank=True)
def __str__(self):
return self.comment
Der "Eindruck" ist ein Kindermodell, das mit dem "Buch" verbunden ist.
Sie müssen dem Projekt mitteilen, dass Sie die CMS-Anwendung installiert haben.
Wenn ich cms / apps.py
öffne, wird eine Klasse namens CmsConfig definiert.
Fügen Sie dies am Ende von "INSTALLED_APPS" in "mybook / settings.py" mit der Zeichenfolge "cms.apps.CmsConfig", "hinzu.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'cms.apps.CmsConfig', #CMS-Anwendung
]
Der folgende Befehl übernimmt die Änderungen in models.py und erstellt eine Migrationsdatei.
$ python manage.py makemigrations cms
Migrations for 'cms':
cms/migrations/0001_initial.py
- Create model Book
- Create model Impression
Mit dem folgenden Befehl können Sie überprüfen, um welche Art von SQL es sich bei dieser Migrationsdatei handelt.
$ python manage.py sqlmigrate cms 0001
BEGIN;
--
-- Create model Book
--
CREATE TABLE "cms_book" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(255) NOT NULL, "publisher" varchar(255) NOT NULL, "page" integer NOT NULL);
--
-- Create model Impression
--
CREATE TABLE "cms_impression" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "comment" text NOT NULL, "book_id" integer NOT NULL REFERENCES "cms_book" ("id") DEFERRABLE INITIALLY DEFERRED);
CREATE INDEX "cms_impression_book_id_b2966102" ON "cms_impression" ("book_id");
COMMIT;
Verwenden Sie den folgenden Befehl, um die Migrationsdatei, die nicht in der Datenbank enthalten ist, in die Datenbank wiederzugeben.
$ python manage.py migrate cms
Operations to perform:
Apply all migrations: cms
Running migrations:
Applying cms.0001_initial... OK
Da Django 1.7 standardmäßig das Datenbankmigrationstool enthält, ist Ihre tägliche Routinearbeit wie folgt, wenn Sie beispielsweise Elemente in einer neuen Tabelle oder einer vorhandenen Tabelle hinzufügen / ändern möchten.
- Fix models.py
- $ python manage.py makemigrations App-Name… Änderungen in models.py übernehmen und eine Migrationsdatei erstellen
- $ python manage.py migrate… Reflektiert die Migrationsdatei in der Datenbank
Von hier an das Gute an Django.
Django verfügt nicht über eine Generierung von Anwendungsvorlagen wie ein Gerüst, dh eine automatische Generierung von CRUD (Erstellen, Lesen, Aktualisieren, Löschen). Stattdessen gibt es eine Verwaltungssite, von der aus alle Stammwartungsdaten eingegeben werden können.
Lassen Sie uns die Verwaltungssite anzeigen.
Starten Sie den Entwicklungsserver mit "python manage.py runserver".
Greifen Sie mit einem Browser auf http: //127.0.0.1: 8000 / admin /
zu.
Melden Sie sich als Superuser admin / hogefuga
an, der mit dem ersten $ python manage.py createuperuser
initialisiert wurde.
Sie können noch nur Gruppen und Benutzer sehen.
Fügen Sie das Modell, das Sie auf der Administrationssite anzeigen möchten, zu "cms / admin.py" hinzu.
from django.contrib import admin
from cms.models import Book, Impression
admin.site.register(Book)
admin.site.register(Impression)
Werfen wir noch einmal einen Blick auf http: //127.0.0.1: 8000 / admin /.
Bitte versuchen Sie, Daten hinzuzufügen, zu ändern und zu löschen.
Wenn Sie sich die Liste der Verwaltungsseiten in models.py ansehen
def __str__(self):
Der eingestellte wird als Datensatzname angezeigt.
Lassen Sie uns cms / admin.py
so ändern, dass wir den gesamten Eintrag etwas mehr sehen können.
Wenn Sie vor dem Unterricht nicht zwei Zeilen öffnen, wird eine Wellenlinie angezeigt und Sie werden gewarnt.
from django.contrib import admin
from cms.models import Book, Impression
# admin.site.register(Book)
# admin.site.register(Impression)
class BookAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'publisher', 'page',) #Elemente, die Sie auflisten möchten
list_display_links = ('id', 'name',) #Elemente, die mit dem Korrekturlink angeklickt werden können
admin.site.register(Book, BookAdmin)
class ImpressionAdmin(admin.ModelAdmin):
list_display = ('id', 'comment',)
list_display_links = ('id', 'comment',)
raw_id_fields = ('book',) #Ziehen Sie den externen Schlüssel nicht herunter (verhindert Zeitüberschreitung, wenn die Anzahl der Daten zunimmt).
admin.site.register(Impression, ImpressionAdmin)
Wie wär es damit.
Sie können die Tabellen, die Sie Ihrem Modell hinzugefügt haben, einfach auflisten, registrieren, ändern und löschen. Sie brauchen keine Erklärung, wie man ein CRUD macht, oder?
Das erklärt Django nicht, also lassen Sie uns erklären, wie Sie selbst ein CRUD erstellen.
Fahren Sie fort mit Einführung in Python Django (4)
Recommended Posts