Ответ 1
Результат request.method == "POST"
является логическим значением - True
, если текущий запрос пользователя был выполнен с использованием метода HTTP POST, в False
в противном случае (обычно это означает, что HTTP "GET", но там также являются другими методами).
Вы можете узнать больше о различии между GET и POST в ответах на вопрос, который Аласадир указал вам на. В двух словах POST-запросы обычно используются для представления форм - они необходимы, если обработка формы изменит состояние на стороне сервера (например, добавьте пользователя в базу данных, в случае регистрационной формы). GET используется для обычных HTTP-запросов (например, когда вы просто вводите URL-адрес в свой браузер) и для форм, которые могут обрабатываться без каких-либо побочных эффектов (например, форма поиска).
Код обычно используется в условных операторах, чтобы различать код для обработки поданной формы и код для отображения несвязанной формы:
if request.method == "POST":
# HTTP Method POST. That means the form was submitted by a user
# and we can find her filled out answers using the request.POST QueryDict
else:
# Normal GET Request (most likely).
# We should probably display the form, so it can be filled
# out by the user and submitted.
И вот еще один пример: взято прямо из документации Django, используя библиотеку Django Forms:
from django.shortcuts import render
from django.http import HttpResponseRedirect
def contact(request):
if request.method == 'POST': # If the form has been submitted...
form = ContactForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect('/thanks/') # Redirect after POST
else:
form = ContactForm() # An unbound form
return render(request, 'contact.html', {
'form': form,
})