Автор предлагает использовать базовый класс Django
View
вместо generic class-based views (CBV) или function-based views (FBV). Такой подход даёт простоту и гибкость при работе с HTTP-запросами. Отказ от сложных миксинов и использование понятных вспомогательных методов делает код более читаемым и сопровождаемым, снижая когнитивную нагрузку на разработчика.Ключевые идеи
- В Django есть два популярных способа писать views: FBV (функции) и CBV (классы, включая generic views).
- Generic CBV часто содержат слишком много "магии": базовые классы, миксины, переопределяемые методы — их трудно держать в голове.
- FBV наглядны, но при усложнении логики код превращается в большие конструкции
if request.method == ...
. - Автор выбирает компромисс: использовать базовый класс
View
. - Код остаётся простым.
- Логика neatly разделяется по методам (`get`,
post
и др.). - Неподдерживаемые методы автоматически возвращают 405 (Method Not Allowed).
Пример
Вместо функции с
if request.method
:
class CommentFormView(View):
def get(self, request, post_id, *args, **kwargs):
post = get_object_or_404(Post, pk=post_id)
form = CommentForm()
return TemplateResponse(request, "form.html", {"form": form, "post": post})
def post(self, request, post_id, *args, **kwargs):
post = get_object_or_404(Post, pk=post_id)
form = CommentForm(data=request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.post = post
comment.save()
return redirect(post)
return TemplateResponse(request, "form.html", {"form": form, "post": post})
👉 Источник: https://loopwerk.io/articles/2025/django-views/
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Django 6.0 — уже в пути!
✨ Главное в Django 6.0
- Content Security Policy (CSP)
Новый
- Фоновые задачи
Декоратор
- Template Partials
Теги
- Обновлённое Email API
Современный
- Другие улучшения
• В админке — иконки Font Awesome
• В
• Улучшения в Postgres, GeoDjango, миграциях и др.
🔄 Изменения без обратной совместимости
- Минимальная версия MariaDB — 10.6
- Поддержка Python ≥ 3.12
-
- Удалены устаревшие API и внутренние методы
👉 Подробнее: https://docs.djangoproject.com/en/dev/releases/6.0/
#django #python
✨ Главное в Django 6.0
- Content Security Policy (CSP)
Новый
ContentSecurityPolicyMiddleware
, теги csp()
и настройки SECURE_CSP
/ SECURE_CSP_REPORT_ONLY
. - Фоновые задачи
Декоратор
@task
и метод enqueue()
для простого запуска background jobs. - Template Partials
Теги
{% partialdef %}
и {% partial %}
для переиспользуемых фрагментов в шаблонах. - Обновлённое Email API
Современный
EmailMessage
вместо устаревших MIME-классов. - Другие улучшения
• В админке — иконки Font Awesome
• В
auth
увеличены итерации PBKDF2 • Улучшения в Postgres, GeoDjango, миграциях и др.
🔄 Изменения без обратной совместимости
- Минимальная версия MariaDB — 10.6
- Поддержка Python ≥ 3.12
-
DEFAULT_AUTO_FIELD
теперь всегда BigAutoField
- Удалены устаревшие API и внутренние методы
👉 Подробнее: https://docs.djangoproject.com/en/dev/releases/6.0/
#django #python