【发布时间】:2026-01-24 01:50:01
【问题描述】:
从我读过的所有 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 是否具有给定的密钥。”现在,究竟什么是“钥匙”?是表单中的一个字段,并且
if request.GET.has_key('query'):
检查用户是否填写了名为'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'):
已验证“查询”字段是否已填写?
【问题讨论】:
标签: django post get django-forms request