Что request.method == "POST" означает в Django?

Я часто использую эту вещь в своих взглядах, но я хочу знать, что именно это означает.

Что происходит, когда мы пишем request.method == "GET" или request.method == "POST"?

Ответ 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,
    })

Ответ 2

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 лучше.