gpt4 book ai didi

python - 我应该在这里使用 HttpResponseRedirect 吗?

转载 作者:太空狗 更新时间:2023-10-29 21:09:57 25 4
gpt4 key购买 nike

我正在用 Django 教程做 Tango,我已经成功地完成了教程,但是我在 official Django Polls tutorial 中注意到,以下内容:

def vote(request, question_id):
p = get_object_or_404(Question, pk=question_id)
try:
selected_choice = p.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
# Redisplay the question voting form.
return render(request, 'polls/detail.html', {
'question': p,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
# Always return an HttpResponseRedirect after successfully dealing
# with POST data. This prevents data from being posted twice if a
# user hits the Back button.
return HttpResponseRedirect(reverse('polls:results', args=(p.id,)))

这里要注意的部分是“在成功处理 POST 数据后总是返回一个 HttpResponseRedirect”。但是,在 Tango with Django 教程中:

def add_page(request, category_name_url):
context = RequestContext(request)

category_name = decode_url(category_name_url)

if request.method == 'POST':
form = PageForm(request.POST)

if form.is_valid():
page = form.save(commit=False)

try:
cat = Category.objects.get(name=category_name)
page.category = cat
except Category.DoesNotExist:
return render_to_response('rango/add_category.html', {}, context)

page.views = 0
page.save()

return category(request, category_name_url)
else:
print(form.errors)
else:
form = PageForm()

return render_to_response('rango/add_page.html',
{'category_name_url': category_name_url,
'category_name' : category_name,
'form' : form}, context)

请注意,尽管使用了 POST 数据,但缺少 HttpResponseRedirect。不知道这样说对不对?

我看过这里:Django HttpResponseRedirect

此处:Django: HttpResponseRedirect not working

这里:Django HttpResponseRedirect vs render_to_response - how to get a login form to behave the way I need it to

另外,这里:Django form redirect using HttpResponseRedirect

最后在这里:Django: What is the difference b/w HttpResponse vs HttpResponseRedirect vs render_to_response

我仍然不完全了解如何使用 HttpResponseRedirect。请帮忙。

提前感谢所有回复的人。

最佳答案

这是防止用户在服务器端处理初始 POST 请求后重新提交表单的常见做法。

如果您在处理 POST 请求后不使用 HttpResponseRedirect,后果可能是您无意中将多个重复行插入数据库或多次发送确认电子邮件等。

关于python - 我应该在这里使用 HttpResponseRedirect 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22160574/

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