gpt4 book ai didi

Django - 使用 request.GET 和 request.POST 之间的区别

转载 作者:行者123 更新时间:2023-12-04 20:08:55 24 4
gpt4 key购买 nike

从我读过的所有 HTML 书籍中,我知道在更改、添加或删除数据库以及处理密码等敏感信息时应该使用 POST。当您只想搜索数据库而不进行任何更改时,应该使用 GET。话虽如此,我正在阅读一本关于 Django 的书,到目前为止,为了处理表单,我们是这样做的:

def RegistrationFormView(request):
form = RegistrationForm()
if request.method == "POST": #if the user has clicked the 'submit' button on the form and is sending data
form = RegistrationForm(request.POST)

这是有道理的。这本书继续教授如何创建一个搜索页面来搜索数据库。为此,我们使用 GET,这是有道理的。这是表格:
class SearchForm(forms.Form):
query = forms.CharField(
label='Enter a keyword to search for',
widget=forms.TextInput(attrs={'size': 32})
)

但这是观点(这让我感到困惑):
def search_page(request):
form = SearchForm()
bookmarks = []
show_results = False #Only show results if the user has searched something
if request.GET.has_key('query'): #check if the user submitted GET data
show_results = True #return results since the user has submitted GET data
query = request.GET['query'].strip()
if query:
form = SearchForm({'query' : query})

我想在这里澄清四件事。

1)如果我只是这样做会完全一样吗
if request.method == "GET":

代替
 if request.GET.has_key('query'):

2)在行
if request.GET.has_key('query'):

根据 Djangobook,它说“has_key 返回 True 或 False,指定 request.GET 或 request.POST 是否具有给定的键。”现在,究竟什么是“ key ”?键是表单中的一个字段,并且
if request.GET.has_key('query'):

检查用户是否填写了称为“查询”的 formField?

3) 当方法是 GET 时,我可以调用 form.is_valid() 吗?因为我在想的是在做什么
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']

允许吗?

4)这本书为什么这样做
if query:


query = request.GET['query'].strip() 

?是不是线
if request.GET.has_key('query'):

已经验证“查询”字段是否已填写?

最佳答案

  • if request.method == "GET":绝不等同于 if request.GET.has_key('query'):
  • request.GETrequest.POST是字典子类和 has_key是内置词典界面的一部分 http://docs.python.org/2/library/stdtypes.html#dict.has_key但是它已被弃用,取而代之的是 'query' in request.GET .
  • 表单不关心请求方法或根本不关心请求。无论来源是什么,表单都会验证字典。
  • ?query=的情况下或 ?query=%20 key query将评估为 ''' '两者都是 False跑完后strip() . if request.GET.has_key('query'):只检查键是否存在,不查看值。
  • 关于Django - 使用 request.GET 和 request.POST 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21224713/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com