- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在用 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 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/
我想在 Django 中使用类似于 render_to_response 函数的东西,但要使用 HttpResponseRedirect。 这是我的 views.py 用于 render_to_res
有人可以解释一下 Django Tutorial Part 4 是怎么回事吗? 具体来说, map 功能是如何工作的? 我了解 URL 不应在 View 函数中进行硬编码。 return HttpRe
我想将一个 int 参数 (user_id) 从一个登录 View 传递到另一个 View 。这在 HttpResponseRedirect 中可能吗?我尝试这样的事情: return HttpRes
当我尝试反转时,出现错误“* 之后的_reverse_with_prefix() 参数必须是一个序列,而不是整数”。我之前在 View 中对参数进行了硬编码,但正在尝试使其动态化。有什么建议吗? 查看
我已经创建了一个基本的联系表单,当用户提交信息时,它应该重定向到“谢谢”页面。 views.py: def contact(request): # if no errors... re
在向同一页面提交一个赞按钮后,我试图重定向我的页面,但我不断收到 NoReverseMatch at /score/like/2 这是网址 urlpatterns = [ path('user
我正在尝试获取 Django 站点的本地副本。生产站点在登录时工作正常,但我的本地实例在完成登录表单后不会重定向到个人资料页面。 这是login_page观点: def login_page(requ
我是 django (1.5.1) 的新手,对 HttpResponseRedirect 有点困惑。如果我理解正确,需要一个静态字符串,当你希望它动态重定向时,你会得到一个reverse()或一个ge
每当我的 django 站点在 View 对象中调用“HttpResponseRedirect”以重定向到另一个 url 时,它就会剥 ionic 域并返回到主站点。我正在 Django 的 SVN
我是 django (1.5.1) 的新手,对 HttpResponseRedirect 有点不适应。如果我理解正确需要一个静态字符串,并且当您希望它动态重定向时,您会得到一个 reverse() 或
每当我的 django 站点在 View 对象中调用“HttpResponseRedirect”以重定向到另一个 url 时,它就会剥 ionic 域并返回到主站点。我正在 Django 的 SVN
我正在使用以下中间件片段: class AjaxRedirect(object): """ Instead of returning a 302 for AJAX requests,
我正在使用 jquery 对话框打开 django 表单,提交表单后我将其重定向到不同的 View 。重定向的 URL 不是在浏览器中重定向,而是在浏览器控制台中打印。 我的返回语句是return H
我有一个添加和编辑 Meeting 对象的 View ,并且我将在保存 Meeting 对象后显示该对象的参与者列表,我该如何使用 HttpResponseRedirect 返回参与者列表?我认为不可
基本上,我试图将未登录的人重定向到登录页面。 我目前使用的是: return render_to_response('login.html', context_instance=RequestCont
我是 Python/Django 和整体编程的新手。我需要有关 HttpResponseRedirect 的帮助,因为它在我的登录 View 中不起作用。它确实适用于我的主视图文件,但不是我想要的方式
我正在用 Django 教程做 Tango,我已经成功地完成了教程,但是我在 official Django Polls tutorial 中注意到,以下内容: def vote(request, q
我有这个设置 session 变量的重定向 View 。但就好像 session 是flush ed 在被重定向到的 View 被调用之前,因为整个 session 在那里是空的。 (顺便说一句,这是
所以这不会太难,但我无法弄清楚...... 我希望我在 django 中的表单(位于 /file_upload/ )上传文件,将其添加到数据库,然后重定向到一个新页面,其中参数是我所拥有的字段的 id
Django 1.9.6 我想编写一些单元测试来检查重定向。 你能帮我理解我在这里做错了什么吗? 先感谢您。 考试: from django.test import TestCase from dja
我是一名优秀的程序员,十分优秀!