$ python -m django --version
...\> py -m django --version
Где искать помощь:
При наличии проблем с данной инструкцией, пожалуйста, обратитесь к разделу FAQ Получение помощи.
cd
) в каталог, где вы хотите хранить код, и выполните следующую команду:
$ django-admin startproject mysite
...\> django-admin startproject mysite
mysite
в текущем каталоге. Если нет, смотрите Трудности с запуском django-admin.
Примечание
Вы не должны использовать в качестве названия проекта названия компонентов Python или Django. Это означает, что проект не может называться django
(что конфликтует с Django) или test
(конфликтует со стандартным пакетом Python).
Где разместить этот код?
Если вы раньше использовали PHP (без использования современных фреймворков), то, наверное, привыкли размещать код проекта в корневом каталоге сайта на Web-сервере (например, /var/www
). C Django вы не должны этого делать. Это плохая идея добавлять код проекта в корень Web-сервера, так как есть риск, что он будет доступен для просмотра. Не делайте этого в целях безопасности.
Разместите код в каталоге вне корневой директории сайта, например /home/mycode
.
startproject
:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
mysite/
– это просто контейнер для вашего проекта. Его название никак не используется Django и вы можете переименовать его во что угодно.manage.py
: Скрипт, который позволяет вам взаимодействовать с проектом Django. Подробности о manage.py
читайте в разделе django-admin and manage.py.mysite/
- это пакет Python вашего проекта. Его название – это название пакета Python, которое вы будете использовать для импорта чего-либо из проекта (например, mysite.urls
).mysite/__init__.py
: Пустой файл, который указывает Python, что текущий каталог является пакетом Python. (Если вы новичок в Python, читайте о покетах в официальной документации Python.)mysite/settings.py
: Настройки/конфигурация проекта. Раздел Настройки Django расскажет вам все о настройках проекта.mysite/urls.py
: Конфигурация URL-ов для вашего проекта Django. Это «содержание» всех Django-сайтов. Вы можете прочитать о конфигурации URL-ов в разделе Менеджер URL-ов.mysite/wsgi.py
: Точка входа вашего проекта для ASGI-совместимых веб-серверов. Подробности читайте в разделе How to deploy with ASGI.mysite/wsgi.py
: Точка входа вашего проекта для WSGI-совместимых веб-серверов. Подробности читайте в разделе Развёртывание с WSGI.mysite
, если вы этого еще не сделали, и выполните команду:
$ python manage.py runserver
...\> py manage.py runserver
Performing system checks... System check identified no issues (0 silenced). You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them. ноября 23, 2021 - 15:50:53 Django version 3.0, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
Примечание
Игнорируйте предупреждения о невыполненных миграциях, мы разберёмся с базой данных чуть позже.
Поменять порт
По умолчанию, команда runserver
запускает сервер для разработки на локальном IP используя порт 8000.
Если вы хотите изменить порт, укажите его как аргумент. Например, эта команда запускает сервер используя порт 8080:
$ python manage.py runserver 8080
...\> py manage.py runserver 8080
Если вы хотите изменить IP сервера, передайте его вместе со значением порта. Чтобы слушать все публичные IP (полезно, если вы используете Vagrant, или хотите показать свою работу на других компьютерах), используйте:
$ python manage.py runserver 0:8000
...\> py manage.py runserver 0:8000
0 короткая версия 0.0.0.0. Смотрите полное описание команды runserver
.
Автоматическая перезагрузка runserver
Dev-сервер самостоятельно перегружается при изменении Python файлов. Однако некоторые действия не перегружают сервер, например, добавление новых файлов. В таких случаях необходимо самостоятельно перегрузить сервер.
Проекты или приложения
Какая разница между приложением и проектом? Приложение – это Web-приложение, которое предоставляет определенный функционал – например, Web-блог, хранилище каких-то записей или простое приложение для голосования. Проект – это совокупность приложений и конфигурации сайта. Проект может содержать несколько приложений. Приложение может использоваться несколькими проектами.
manage.py
, и оно может быть импортировано как независимый модуль, а не подмодуль mysite
.
manage.py
, и выполните команду:
$ python manage.py startapp polls
...\> py manage.py startapp polls
polls
:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
polls/views.py
и добавим следующий код:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
urls.py
. Каталог приложения должен выглядеть следующим образом:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py
polls/urls.py
добавим следующий код:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
polls.urls
в главной конфигурации URL-ов. В``mysite/urls.py`` добавим импорт django.urls.include
, затем include()
добавим в список urlpatterns
. Вы должны получить следующий код:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
include()
позволяет ссылаться на другие конфигурации URL-ов. Когда Django встречает include()
, обрезается часть URL, которая была распознана до этого момента, а оставшаяся часть отправляется в указанную конфигурация URL-ов для последующей обработки.
include()
в том, чтобы создать легко подключаемые URL-ы. Т.к. приложение для голосования содержит собственную конфигурацию URL-ов (polls/urls.py
), они могут быть подключены в «/polls/», или «/fun_polls/», или «/content/polls/», или любой другой путь, и приложение будет работать.
Когда использовать include()
Вы всегда должны использовать include()
при включении других шаблонов URL. Файл admin.site.urls
является единственным исключением из этого.
index
в настройках URL-ов. Проверим его работоспособность, запустив команду:
$ python manage.py runserver
...\> py manage.py runserver
index
.
Страница не найдена?
Если вы получаете страницу с ошибкой, проверьте, что вы идёт на http://localhost:8000/polls/ , а не на http://localhost:8000/.
path()
принимает четыре аргумента, два из них обязательны: route
и view
, и два необязательных: kwargs
и name
. В этом месте лучше разобраться для чего предназначены эти аргументы.
path()
аргумент: route
¶route
является строкой, содержащую шаблон URL. При обработке запроса Django начинает с первого шаблона в urlpatterns
и проходит до конца списка, сравнивайся запрошенный URL с каждым шаблоном пока не найдёт совпавший.
https://www.example.com/myapp/
, URLconf будет искать myapp/
. В запросе https://www.example.com/myapp/?page=3
, URLconf будет также искать myapp/
.
path()
аргумент: view
¶HttpRequest
в качестве первого аргумента и все “захваченные” значения из route
в виде именованных аргументов. Мы покажем это чуть позже.
url()
аргумент: kwargs¶url()
аргумент: name¶нояб. 23, 2021