Я часто использую эту вещь в своих взглядах, но я хочу знать, что именно это означает.
Что происходит, когда мы пишем request.method == "GET"
или request.method == "POST"
?
Я часто использую эту вещь в своих взглядах, но я хочу знать, что именно это означает.
Что происходит, когда мы пишем request.method == "GET"
или request.method == "POST"
?
Результат 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,
})
request.method
возвращает тип метода запроса, который может быть GET,POST,PUT,DELETE
и т.д.
после возвращения вы сравниваете его со своей строкой.
оператор сравнения всегда предоставляет логическое значение (True or False
).
Несколько раз нам нужно обрабатывать функциональность на основе запрошенного типа метода.
if request.method == "GET":
# functionality 1
elif request.method == "POST":
# functionality 2
elif request.method == "PUT":
# functionality 3
elif request.method == "DELETE":
# functionality 4
для метода запроса GET
данные передаются вместе с url.
для метода запроса POST
данные передаются внутри тела. С точки зрения метода безопасности тип POST
лучше.