Django 3: Создаем приложение и обрабатываем URL

Создадим новое Django-приложение и научимся отслеживать различные URL-адреса, отображая пользователю информацию при переходе на них.

Django-приложение

Приложения внутри Django-проекта — это отдельные категории сайта. Примеры:

  • Форум: Выделяется в отдельное приложение.
  • Система регистрации и авторизации: Работа с пользователем — отдельное приложение.

Количество приложений зависит от структуры сайта. Можно объединить всё в одно, но это нелогично. Django позволяет разбивать сайт на приложения-категории. Лучше разделять различные категории на разные приложения.

Примеры приложений:

  • main: Для основных страниц (главная, о компании, контакты).
  • users: Для регистрации и авторизации пользователей.
  • Приложение для добавления записей в базу данных: Обработка форм и отображение данных.

Хотя можно создать одно приложение для всего сайта, наличие хотя бы одного обязательно. Приложения необходимы для:

  • Создание шаблонов, отображаемых пользователю.
  • Работа с базой данных.
  • Организация функционала.

Количество приложений не ограничено.

Создание приложения main

В терминале выполним команду:

python manage.py startapp main

(Если команда python не работает, используйте python3).

Создаётся папка main со следующими файлами:

  • migrations: Папка для файлов миграций (описание структуры базы данных). Подробно миграции будут рассмотрены в отдельном уроке.
  • __init__.py: Пустой файл, указывающий Python, что это пакет.
  • admin.py: Определение моделей, отображаемых в панели администратора.
  • apps.py: Глобальные настройки приложения. Здесь указано название приложения (main).
  • models.py: Создание моделей данных (классы для таблиц в базе данных).
  • tests.py: Файл для unit-тестирования.
  • views.py: Методы, обрабатывающие запросы пользователей к URL-адресам.

Регистрация приложения

Зарегистрируем приложение в файле settings.py в секции INSTALLED_APPS. Добавим строку:

INSTALLED_APPS = [
    # ... другие приложения ...
    'main',
]

Отслеживание URL-адресов

Для отслеживания URL-адресов используется файл urls.py (в корне проекта). Уже определён URL для панели администратора. Добавим отслеживание главной страницы:

В файле urls.py (корневой):

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('main.urls')), #Подключение URL из приложения main
]

Создадим файл urls.py в приложении main:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'), # Главная страница
    path('about/', views.about, name='about'), # Страница "О нас"
]

В файле views.py (приложение main):

from django.http import HttpResponse

def index(request):
    return HttpResponse("<h4>Проверка работы</h4>")

def about(request):
    return HttpResponse("Страница про нас")

Теперь при переходе на / выводится «Проверка работы», а при переходе на /about/ — «Страница про нас».

Практика

Добавьте отслеживание других URL-адресов и выводите различный контент. В следующем уроке мы научимся использовать HTML-шаблоны.

Что будем искать? Например,программа