РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
295 of 818 menu

Метод post

Метод post применяется в классах-представлениях Django для обработки POST-запросов. Он вызывается автоматически, когда запрос к представлению приходит с методом POST. В качестве аргументов метод принимает объект HttpRequest и дополнительные параметры, переданные через URL. Метод должен возвращать объект HttpResponse или его подкласс, который будет отправлен клиенту в качестве ответа.

Синтаксис

from django.http import HttpResponse from django.views import View class MyView(View): def post(self, request, *args, **kwargs): # обработка POST-запроса return HttpResponse("Ответ")

Пример

Рассмотрим пример класса-представления, которое обрабатывает отправку формы через POST-запрос:

from django.http import HttpResponse from django.views import View from myapp.models import Article class ArticleCreateView(View): def post(self, request, *args, **kwargs): title = request.POST.get('title') content = request.POST.get('content') if title and content: article = Article.objects.create( title=title, content=content ) return HttpResponse(f"Article '{article.title}' created") else: return HttpResponse("Missing required fields", status=400)

Результат выполнения при успешном создании:

"Article 'My New Article' created"

Пример

Рассмотрим пример обработки POST-запроса с обновлением существующей записи:

from django.http import HttpResponse from django.shortcuts import get_object_or_404 from django.views import View from myapp.models import Article class ArticleUpdateView(View): def post(self, request, article_id, *args, **kwargs): article = get_object_or_404(Article, id=article_id) new_title = request.POST.get('title') new_content = request.POST.get('content') if new_title: article.title = new_title if new_content: article.content = new_content article.save() return HttpResponse(f"Article '{article.title}' updated")

Результат выполнения при успешном обновлении:

"Article 'Updated Title' updated"

Пример

Рассмотрим пример обработки POST-запроса с использованием форм Django:

from django.http import HttpResponseRedirect from django.shortcuts import render from django.views import View from myapp.forms import ArticleForm class ArticleFormView(View): def post(self, request, *args, **kwargs): form = ArticleForm(request.POST) if form.is_valid(): article = form.save() return HttpResponseRedirect(f'/articles/{article.id}/') else: return render(request, 'article_form.html', {'form': form})

Результат выполнения при успешной валидации:

"Redirect to /articles/5/"

Смотрите также

  • метод get,
    который обрабатывает GET-запросы в классах-представлениях
  • метод dispatch,
    который определяет метод обработки запроса на основе HTTP-метода
  • метод as_view,
    который преобразует класс-представление в функцию
  • класс View,
    базовый класс для всех представлений в Django
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить