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

2.7 KiB
Raw Blame History


status: seed type: concept tags: [django, routing, templates, cbv, fbv] created: 2026-05-30 updated: 2026-05-30 title: Django: Представления, шаблоны и CBV source: ["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.