Django создаёт первый проект
В этой главе мы познакомимся с инструментом управления Django и с тем, как использовать Django для создания проектов. Первый проект мы назовём HelloWorld.
Примечания к тестовой версии:
-
Python 3.9.7
-
Django 4.2.7
Проверить номер версии можно с помощью следующей команды:
# python3 -V Python 3.9.7 # python3 -m django --version 4.2.7
Инструмент управления Django
После установки Django у вас теперь должен быть доступен инструмент управления.django-admin, если в Windows не настроены переменные среды, можно использоватьdjango-admin。
Давайте рассмотрим введение в команды django-admin:
$ 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
……省略部分……
Создание первого проекта
Используйте django-admin для создания проекта HelloWorld:
django-admin startproject HelloWorld
После создания мы можем просмотреть структуру каталогов проекта:
$ cd HelloWorld/
$ tree
HelloWorld/ # 项目根目录
├── manage.py # 项目管理脚本
├── db.sqlite3 # SQLite 数据库文件
├── __pycache__/ # Python 字节码缓存
└── HelloWorld/ # 项目配置目录(与项目同名)
├── __init__.py # 包标识文件
├── settings.py # 项目设置
├── urls.py # 主路由配置
├── asgi.py # ASGI 配置
└── wsgi.py # WSGI 配置
Корневой каталог проекта (HelloWorld/):
| Файл/каталог | Функция |
|---|---|
manage.py | Точка входа инструмента командной строки Django, используемая для запуска сервера разработки, миграций базы данных и других операций. |
db.sqlite3 | Файл базы данных SQLite (база данных по умолчанию, используется в среде разработки). |
__pycache__/ | Каталог кэша байт-кода Python (создаётся автоматически, ручное изменение не требуется). |
Основной каталог конфигурации проекта (HelloWorld/HelloWorld/):
| Файл/каталог | Функция |
|---|---|
__init__.py | Пустой файл, сообщает Python, что этот каталог является пакетом. |
settings.py | Основной файл конфигурации, включая: - Настройки базы данных ( DATABASES)- Пути к статическим файлам ( STATIC_URL)- Регистрация приложений ( INSTALLED_APPS)- Режим отладки ( DEBUG=True/False) |
urls.py | Основной файл конфигурации маршрутов, определяет соответствие между URL-путями и представлениями. |
asgi.py | Конфигурация ASGI-сервера (используется для асинхронных веб-серверов, таких как Daphne). |
wsgi.py | Конфигурация WSGI-сервера (для традиционных веб-серверов, таких как Gunicorn, uWSGI). |
Далее мы переходим в директорию HelloWorld и выполняем следующую команду для запуска сервера:
python3 manage.py runserver 0.0.0.0:8000
0.0.0.0 позволяет другим компьютерам подключаться к серверу разработки, а 8000 — это номер порта. Если не указан, номер порта по умолчанию равен 8000.
Введите IP-адрес вашего сервера в браузере (здесь мы вводим локальный IP-адрес:127.0.0.1:8000) и номер порта. Если он запускается нормально, вывод будет следующим:

Подробное объяснение ключевых файлов
1. settings.py (основная конфигурация)
Пример
# Предупреждение по безопасности: DEBUG должен быть отключён в производственной среде!
DEBUG = True
# Разрешённые доменные имена (необходимо настроить, когда DEBUG=False)
ALLOWED_HOSTS = []
# Зарегистрированные приложения Django
INSTALLED_APPS = [
'django.contrib.admin', # Административная панель
'django.contrib.auth', # Система аутентификации
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles', # Обработка статических файлов
]
# Конфигурация базы данных (по умолчанию SQLite)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3', # Путь к файлу базы данных
}
}
# URL статических файлов (CSS/JS/изображения)
STATIC_URL = 'static/'
2. urls.py (конфигурация маршрутизации)
Пример
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls), # Маршруты управления бэкендом
# Здесь можно добавить собственные маршруты, например:
# path('blog/', include('blog.urls')),
]
3. manage.py (скрипт управления проектом)
Пример
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)
Представления и конфигурация URL
В созданном ранее каталоге HelloWorld создайте новый файл views.py внутри каталога HelloWorld и введите код:
Код файла HelloWorld/HelloWorld/views.py:
Далее привяжите URL к функции представления. Откройте файл urls.py, удалите исходный код и скопируйте и вставьте следующий код в файл urls.py:
Код файла HelloWorld/HelloWorld/urls.py:
Вся структура каталогов выглядит следующим образом:
$ 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
После завершения запустите сервер разработки Django и откройте его в браузере. Откройте браузер и перейдите по адресу:
Мы также можем изменить следующие правила:
Код файла HelloWorld/HelloWorld/urls.py:
Откройте в браузереhttp://127.0.0.1:8000/hello, и вывод будет следующим:

Примечание:Если код в проекте изменён, сервер автоматически обнаружит изменения кода и автоматически перезагрузится, поэтому, если вы уже запустили сервер, вручную перезапускать его не нужно.
Функция path()
Django path() может принимать четыре параметра: два обязательных параметра: route, view, и два необязательных параметра: kwargs, name.
Синтаксис:path(route, view, kwargs=None, name=None)
route:Строка, определяющая часть пути URL. Она может содержать переменные, например
<int:my_variable>, чтобы захватывать параметры из URL и передавать их в функцию представления.view:Функция представления обрабатывает запросы, соответствующие заданному маршруту. Она может быть функцией или представлением на основе класса.
kwargs (необязательно):Словарь, содержащий дополнительные именованные аргументы, передаваемые в функцию представления.
name (необязательно):Задаёт уникальное имя для URL-маршрута, чтобы на него можно было ссылаться в других местах кода. Это очень полезно для генерации URL в шаблонах или выполнения перенаправлений в коде.
В Django 2.0 метод re_path() можно использовать для совместимости с методомurl(), а также через re_path() можно реализовать некоторые правила регулярных выражений.
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')),
...
]Другие расширения