Django erstellt das erste Projekt

In diesem Kapitel stellen wir das Django-Verwaltungstool vor und wie man Django zum Erstellen von Projekten verwendet. Das erste Projekt nennen wir HelloWorld.

Hinweise zur Testversion:

  • Python 3.9.7

  • Django 4.2.7

Sie können die Versionsnummer mit dem folgenden Befehl überprüfen:

# python3 -V
Python 3.9.7
# python3 -m django --version
4.2.7

Django-Management-Tool

Nach der Installation von Django sollte das Management-Tool nun verfügbar sein.django-admin, wenn Windows keine Umgebungsvariablen konfiguriert hat, können Siedjango-admin verwenden。

Schauen wir uns die Einführung in die django-admin-Befehle an:

$ django-admin

Type 'django-admin help <subcommand>' for help on a specific subcommand.

Available subcommands:

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver
……省略部分……

Das erste Projekt erstellen

Verwenden Sie django-admin, um das HelloWorld-Projekt zu erstellen:

django-admin startproject HelloWorld

Nach der Erstellung können wir uns die Verzeichnisstruktur des Projekts ansehen:

$ cd HelloWorld/
$ tree
HelloWorld/                  # 项目根目录
├── manage.py                # 项目管理脚本
├── db.sqlite3               # SQLite 数据库文件
├── __pycache__/             # Python 字节码缓存
└── HelloWorld/              # 项目配置目录(与项目同名)
    ├── __init__.py          # 包标识文件
    ├── settings.py          # 项目设置
    ├── urls.py             # 主路由配置
    ├── asgi.py             # ASGI 配置
    └── wsgi.py             # WSGI 配置

Projekt-Stammverzeichnis (HelloWorld/):

Datei/VerzeichnisFunktion
manage.pyEinstiegspunkt für das Django-Kommandozeilen-Tool, der zum Ausführen des Entwicklungsservers, von Datenbankmigrationen und anderen Vorgängen verwendet wird.
db.sqlite3SQLite-Datenbankdatei (Standarddatenbank, verwendet in der Entwicklungsumgebung).
__pycache__/Python-Bytecode-Cache-Verzeichnis (automatisch generiert, keine manuelle Änderung erforderlich).

Hauptkonfigurationsverzeichnis des Projekts (HelloWorld/HelloWorld/):

Datei/VerzeichnisFunktion
__init__.pyLeere Datei, teilt Python mit, dass dieses Verzeichnis ein Paket ist.
settings.pyKernkonfigurationsdatei, einschließlich:
- Datenbankeinstellungen (DATABASES)
- Pfade für statische Dateien (STATIC_URL)
- App-Registrierung (INSTALLED_APPS)
- Debug-Modus (DEBUG=True/False)
urls.pyHaupt-Routenkonfigurationsdatei, definiert die Zuordnung zwischen URL-Pfaden und Views.
asgi.pyASGI-Server-Konfiguration (verwendet für asynchrone Webserver wie Daphne).
wsgi.pyWSGI-Server-Konfiguration (für traditionelle Webserver wie Gunicorn, uWSGI).

Als Nächstes wechseln wir in das Verzeichnis HelloWorld und führen den folgenden Befehl aus, um den Server zu starten:

python3 manage.py runserver 0.0.0.0:8000

0.0.0.0 ermöglicht anderen Computern, sich mit dem Entwicklungsserver zu verbinden, und 8000 ist die Portnummer. Wenn nicht angegeben, ist die Portnummer standardmäßig 8000.

Geben Sie die IP Ihres Servers im Browser (hier geben wir die lokale IP-Adresse ein:127.0.0.1:8000) und die Portnummer ein. Wenn er normal startet, sieht die Ausgabe wie folgt aus:

Detaillierte Erklärung der Schlüsseldateien

1. settings.py (Kernkonfiguration)

Beispiel

# Beispielausschnitt aus HelloWorld/settings.py

# Sicherheitswarnung: DEBUG muss in der Produktion deaktiviert werden!
DEBUG = True

# Erlaubte Domainnamen (müssen konfiguriert werden, wenn DEBUG=False)
ALLOWED_HOSTS = []

# Registrierte Django-Apps
INSTALLED_APPS = [
    'django.contrib.admin',  # Admin-Backend
    'django.contrib.auth',   # Authentifizierungssystem
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',  # Verarbeitung statischer Dateien
]

# Datenbankkonfiguration (Standard SQLite)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',  # Pfad zur Datenbankdatei
    }
}

# URL für statische Dateien (CSS/JS/Bilder)
STATIC_URL = 'static/'

2. urls.py (Routing-Konfiguration)

Beispiel

# Beispiel für HelloWorld/urls.py

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),  # Backend-Verwaltungsrouten
    # Hier können benutzerdefinierte Routen hinzugefügt werden, z. B.:
    # path('blog/', include('blog.urls')),
]

3. manage.py (Projektverwaltungsskript)

Beispiel

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "HelloWorld.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

Views und URL-Konfiguration

Erstellen Sie im zuvor erstellten HelloWorld-Verzeichnis eine neue Datei views.py im HelloWorld-Verzeichnis und geben Sie den Code ein:

Code der Datei HelloWorld/HelloWorld/views.py:

from django.http import HttpResponse def hello(request): return HttpResponse("Hello world ! ")

Als Nächstes binden Sie die URL an die View-Funktion. Öffnen Sie die Datei urls.py, löschen Sie den ursprünglichen Code und kopieren Sie den folgenden Code und fügen Sie ihn in die Datei urls.py ein:

HelloWorld/HelloWorld/urls.py Datei-Code:

from django.urls import path from . import views urlpatterns = [ path("", views.hello, name="hello"), ]

Die gesamte Verzeichnisstruktur ist wie folgt:

$ tree
.
|-- HelloWorld
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py              # url 配置
|   |-- urls.pyc
|   |-- views.py              # 添加的视图文件
|   |-- views.pyc             # 编译后的视图文件
|   |-- wsgi.py
|   `-- wsgi.pyc
`-- manage.py

Nach Abschluss starten Sie den Django-Entwicklungsserver und greifen Sie im Browser darauf zu. Öffnen Sie den Browser und besuchen Sie:

Wir können auch die folgenden Regeln ändern:

HelloWorld/HelloWorld/urls.py Datei-Code:

from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello), ]

Im Browser öffnenhttp://127.0.0.1:8000/hello, und die Ausgabe sieht wie folgt aus:

Hinweis:Wenn der Code im Projekt geändert wird, erkennt der Server die Codeänderungen automatisch und lädt automatisch neu. Wenn Sie den Server bereits gestartet haben, müssen Sie ihn nicht manuell neu starten.


path()-Funktion

Django path() kann vier Parameter akzeptieren: zwei erforderliche Parameter: route, view, und zwei optionale Parameter: kwargs, name.

Syntax:
path(route, view, kwargs=None, name=None)
  • route:Ein String, der den Pfadteil der URL definiert. Er kann Variablen enthalten, zum Beispiel<int:my_variable>, um Parameter aus der URL zu erfassen und sie an die View-Funktion zu übergeben.

  • view:View-Funktion, verarbeitet Anfragen, die der angegebenen Route entsprechen. Sie kann eine Funktion oder eine klassenbasierte View sein.

  • kwargs (optional):Ein Dictionary, das zusätzliche Schlüsselwortargumente enthält, die an die View-Funktion übergeben werden.

  • name (optional):Gibt einen eindeutigen Namen für die URL-Route an, sodass sie an anderer Stelle im Code referenziert werden kann. Dies ist sehr nützlich, um URLs in Templates zu generieren oder Weiterleitungen im Code durchzuführen.

In Django 2.0 kann die Methode re_path() verwendet werden, um mit derurl()-Methode kompatibel zu sein, und einige Regeln für reguläre Ausdrücke können auch über re_path() implementiert werden.

from django.urls import include, re_path

urlpatterns = [
    re_path(r'^index/$', views.index, name='index'),
    re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'),
    re_path(r'^weblog/', include('blog.urls')),
    ...
]
Weitere Erweiterungen