Как я пишу Django views Автор предлагает использовать базовый класс… — Django Python — TG.ME

🔥 Как я пишу Django views

Автор предлагает использовать базовый класс 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/
t.me/Django_pythonl/362Translating to English…
September 11, 2025 2.4K 17