34

我在我的观点中经常使用这个东西,但我想知道这到底是什么意思。

当我们写request.method == "GET"or时会发生什么request.method == "POST"

4

3 回答 3

32

的结果request.method == "POST"是一个布尔值 -True如果来自用户的当前请求是使用 HTTP“POST”方法执行的,False否则(通常这意味着 HTTP“GET”,但也有其他方法)。

您可以阅读有关 GET 和 POST 之间差异的更多信息,以回答 Alasadir 指出的问题。简而言之,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,
    })
于 2013-10-02T08:09:24.723 回答
15

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是更好的一种。

于 2015-12-07T10:24:49.767 回答
-1

book_id = Book.objects.get(id=id) 如果 request.method == 'POST':

    book_save == BookForm(request.POST, request.FILES, instance=book_id)
    if book_save.is_valid():

        book_save.save()

else:
    book_save = BookForm(instance=book_id)

y = {
    'form':book_save,
}

return render(request, 'pages/update.html', y)
于 2021-01-21T19:56:15.783 回答