gpt4 book ai didi

python - 实用 Django 项目 - 第 183 和 184 页

转载 作者:行者123 更新时间:2023-11-30 23:53:17 27 4
gpt4 key购买 nike

第 183 和 184 页有以下代码:

def edit_snippet(request, snippet_id):
snippet = get_object_or_404(Snippet, pk=snippet_id)
if request.user.id != snippet.author.id:
return HttpResponseForbidden()
if request.method == 'POST':
form = SnippetForm(instance=snippet, data=request.POST)
if form.is_valid():
snippet = form.save()
return HttpResponseRedirect(snippet.get_absolute_url())
else:
form = SnippetForm(instance=snippet)
return render_to_response('cab/snippet_form.html',{ 'form': form, 'add': False })
edit_snippet = login_required(edit_snippet)

为什么需要在这里添加数据属性:

form = SnippetForm(instance=snippet, data=request.POST)

实例属性还不够吗?

如果请求方法不是 POST,那么它可以是任何方法,但通常是 GET 方法。为什么在这种情况下没有数据属性?为什么需要考虑其他请求方法?我们不能直接写:

def edit_snippet(request, snippet_id):
snippet = get_object_or_404(Snippet, pk=snippet_id)
if request.user.id != snippet.author.id:
return HttpResponseForbidden()
if request.method == 'POST':
form = SnippetForm(instance=snippet, data=request.POST)
if form.is_valid():
snippet = form.save()
return HttpResponseRedirect(snippet.get_absolute_url())
return render_to_response('cab/snippet_form.html',{ 'form': form, 'add': False })
edit_snippet = login_required(edit_snippet)

如果请求方法不是 POST,那么不让用户编辑他的代码片段对我来说听起来更合乎逻辑。你能解释一下这些要点吗?

最佳答案

这是 Django 的做法:相同的 View 用于显示要编辑的表单 (GET),然后验证它 (POST)。

请参阅 docs 中的此示例:

The standard pattern for processing a form in a view looks like this:

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_to_response('contact.html', {
'form': form,
})

关于python - 实用 Django 项目 - 第 183 和 184 页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5857724/

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