Files
SecondBrain/90 Library/Programming/Python/Django: Представления, шаблоны и CBV.md
T
2026-05-31 10:08:46 +03:00

2.7 KiB
Raw Blame History

status, type, tags, created, updated, title, source
status type tags created updated title source
seed concept
django
routing
templates
cbv
fbv
2026-05-30 2026-05-31 Django: Представления и Шаблоны
lec2-django_lec_urls_views_templates-1.pdf
lec3-django_cbv-1.pdf
p4-django_cbv-1.pdf

Django: Представления и Шаблоны

Маршрутизация (URL Routing)

  • Описывается в urlpatterns с помощью path() и re_path().
  • Конвертеры: <int:pk>, <slug:slug>, <uuid:id>.
  • Включение других файлов: path('blog/', include('blog.urls')).
  • Реверсирование: {% url 'name' %} в шаблонах или reverse('name') в Python.

Представления (Views)

Views принимают HttpRequest и возвращают HttpResponse.

Функциональные представления (FBV)

from django.shortcuts import render, get_object_or_404

def index(request):
    latest_items = Model.objects.all()[:5]
    return render(request, "app/index.html", {"items": latest_items})

Классовые представления (CBV)

Абстрагируют типичные задачи. Вызываются в URL через .as_view().

  • TemplateView: Отображение статического шаблона.
  • ListView: Автоматический список объектов (данные в object_list).
  • DetailView: Детальная информация об одном объекте (ищет по pk или slug).

Пример ListView:

class PostListView(ListView):
    model = Post
    template_name = "blog/list.html"
    context_object_name = "posts"
    paginate_by = 10

Шаблоны (Templates)

Используют Django Template Language (DTL).

Синтаксис

  • Переменные: {{ var.attr }}.
  • Теги: {% if %}, {% for %}, {% url %}, {% csrf_token %}.
  • Фильтры: {{ date|date:"Y-m-d" }}, {{ list|length }}, {{ text|lower }}.

Наследование шаблонов

Позволяет избежать дублирования HTML-кода.

  • Базовый шаблон (base.html): Определяет блоки {% block content %}{% endblock %}.
  • Дочерний шаблон: Использует {% extends "base.html" %} и переопределяет блоки.

Статические файлы (Static)

  • Подключаются через {% load static %}.
  • Настройки в settings.py: STATIC_URL, STATICFILES_DIRS.
  • В продакшне используется команда python manage.py collectstatic.