Django在HttpResponseRedirect中显示消息参数

时间:2012-10-17 02:06:32

标签: django redirect httpresponse messages

我正在处理一个基本网页,询问用户的姓名和电话号码,如果成功提交,它将重定向到显示用户姓名和电话号码的页面。当我尝试提交姓名和电话号码时,我一直收到403错误。这是代码:

这是views.py中的代码:

def homeform(request):
 if request.method == "POST":
form = PhoneForm(request.post)
if form.is_valid():
    cd = form.cleaned_data
    messages.success(request, "%s, you have recorded your phone number as %d. Thanks for the update.") %(cd["name"],cd["phone"])
    return HttpResponseRedirect('/success/')
 else:
    form = PhoneForm()
 return render_to_response('phone_form.html',{'form': form})

def success(request):
  return render_to_response('success.html',{'messages': messages})

这是urls.py中的代码:

urlpatterns = patterns('',
('^home/$',homeform),
('^success/$', success),

以下是我在视图中用于成功功能的html文件:

<html>
<head>
<title>Success</title>
<head>
<body>
  {% if messages %}
  <ul class="messages">
  {% for message in messages %}
  <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
  {% endfor %}
  </ul>
  {% endif %}
</body>
</html>

1 个答案:

答案 0 :(得分:2)

我不明白你的问题标题,但如果你得到403,那很可能是CSRF错误(你会看到)。您应该发布POST的视图,而不是成功视图/模板。

在任何POST表单的{% csrf_token %}标记内添加<form>,否则django会抱怨CSRF错误。