python
May 4, 2023

Пошаговый запуск Django проекта

Бог у всех один — провайдеры разные (Стас Янович Янковский). Web-программа на базе фреймворка Django состоит из сущности называемой проектом и входящих в него приложений. Последние являются независимыми частями программы, над которыми могут работать разные команды. Бонус от такой архитектуры - возможность переиспользования приложений в других проектах.

После создания проекта в нем будут размещены служебные файлы, ключевыми из которых являются:

manage.py - запускает управляющие команды, например, создания приложения, старт сервера.

в подпапке с именем проекта:

urls.py - хранит обработчики путей либо указатели к аналогичным файлам urls.py, в которых задаются обработчики на уровне приложений;

settings.py - задает глобальные настройки проекта, например, права доступа, язык сайта, список приложений, путь к основному url.py.

Ниже представляю ключевые шаги для создания web-программы:

  1. Создать проект
  2. Создать и зарегистрировать приложение
  3. Установить соответствие адресов url и обработчиков
  4. Запустить сервер

Дальнейшие манипуляции производятся из активированного виртуального окружения с установленным фреймворком Django.

1. Создание проекта

Используем модуль django-admin:

django-admin startproject имя

2. Создание и регистрация приложения

Создание - вызываем модуль manage:

python manage.py startapp имя

Регистрация - добавьте имя в список INSTALLED_APPS в файле settings.py:

3. Установление соответствия адресов url и обработчиков

Проще всего задать в списке urlpatterns файла urls.py из подпапки с именем проекта. Составляющие urlpatterns - объекты path, в которых можно задать url (оканчивающийся на символ "/") и функцию. Также с функцией include можно задать дополнительные urls.py для приложений, обрабатывающих адреса с заданным префиксом.

Получив запрос от пользователя, Django ищет отображение на обработчик в файле, указанном в переменной ROOT_URLCONF файла settings.py (в моем случае - 'test_proj.urls'). Последний в свою очередь может отослать поиск к дополнительным urls.py. Функции-обработчики обычно задаются в файлах с именем views.py (не забудьте указать обязательный аргумент запроса), откуда импортируются в соответствующие urls.py.

Ниже пропишу в основном urls.py обработчик для обращения к основной странице сайта (будет находится в файле views.py директории с именем проекта), а также задам дополнительный urls.py, где будут указываться обработчики адресов с префиксом 'main':

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

from .views import root_f

urlpatterns = [
    path('', root_f),
    path('main/', include('main_app.urls')),
]

Вот файл views.py, где реализован обработчик для обращения к основной странице сайта:

from django.http import HttpResponse

def root_f(request):
    return HttpResponse('<h1>Root</h1><p>Абзац</p>')

А вот urls.py приложения main_app:

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

from .views import main_f

urlpatterns = [
    path('', main_f),
]

Обратите внимание, что в этом файле пустой адрес будет присоединен к main/ (в файлах urls.py приложений не пишется префикс, заданный в головном urls.py).

Ниже views.py приложения main_app:

from django.shortcuts import render

def main_f(request):
    return render(request, 'main.html')
    

4. Запуск сервера

Воспользуйтесь модулем manage:

python manage.py runserver

Вот ответ сервера на запрос главной страницы:

А вот, что мы получим при обращении к main: