Django - первые шаги

Для начала нам надо установить Django

pip3 install Django

После установки пакета вам будет доступна команда django-admin в консоли. Она нам понадобится для старта проекта. Стартуется проект с помощью команды django-admin startproject <project_name>.

django-admin startproject new_project

Applications

Проекты Django разбиваются на "Приложения", для создания приложения надо запустить следующую команду:

python manage.py startapp <application_name>
note

TODO: Как разбивать проект на приложения

Создание вьюшек

Вью-функции - это функции получающие запросы и возвращающие ответы. Принято писать view-функции в файле views.py каждого application. Вьюшки получают первым аргументом объект-запроса.

from django.http import HttpResponse, HttpRequest
def simple_view(req: HttpRequest) -> HttpResponse {
return HttpResponse("abirvalg")
}

Регистрация путей и обработчиков запроса

Роутинг настраивается в файле urls.py вашего проекта, каждое приложение может иметь собственный файл urls.py.

├── blog
│   ├── apps.py
│   └── urls.py # файл роутов для приложения 'blog'
├── your_project_name
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py # основной файл настройки роутинга
│   ├── views.py
│   └── wsgi.py
└── manage.py

В файле urls.py должно быть определено имя urlpatterns, ссылаться эта переменная должна на список соответствий путь-обработчик.

Для создания пары путь-обработчик используются функции:

  • path(route, view, name=None) - (New: Django v2.0)

    Аргументы

    • route - правило для пути. Пример: /posts/<username>

    • view - обработчик.

    • name - имя роута, потом используется для генерации ссылок на этот роут.. например в шаблонах. Вовзращает функция либо экземпляр класса URLResolver, либо URLPattern.

  • url - (OLD) устаревшая вспомогательная функция для создания пары путь-обработчик

  • include(module_path | urlpatterns, namespace=None) - Предназначена для встраивания правил из другого приложения(app).

    Получает она первым аргументом, путь до другого файла urls.py в стороннем приложении.

    namespace - название для полученного списка правил.

  • re_path - Аналог path но получает в качестве первого аргумента регулярное выражение.

# urls.py
from django.urls import path, re_path, include
from .views import simple_view, post_view
urlpatterns = [
# 👇 - application
path("admin/", include("custom_blog.urls"))
re_path(r"^posts/(?P<post_id>/$", post_view)
path("", simple_view)
]

Старт сервера

Django предоставляет нам простой http сервер для разработки. Чтобы его стартануть:

python3 ./manage.py runserver