Django表单提交动作和HttpResponseRedirect的区别

时间:2014-10-24 11:03:06

标签: python django forms

参考django文档的form topic,如果在我写的视图函数中,

if form.is_valid():
    return HttpResponseRedirect('/thanks/')

在表单模板中,我给出了像

这样的动作
<form action="/your-name/" method="post">

然后在提交时,表单将转到/your-name/中映射到urls.py网址的视图但是我在呈现表单的函数中的HttpResponseRedirect('/thanks/')行呢?如果表单有效,则保存表单。但是表格url中的action是什么。现在def get_name(request):是映射到/user/ url的函数。我希望你能理解我的困惑。需要一些帮助。

1 个答案:

答案 0 :(得分:2)

这是“post redirect get”模式的一个例子 - 如果帖子成功(表单有效并且处理正常),最好返回一个重定向,然后从中获取您重定向到的网址上的用户代理。如果用户尝试重新加载页面,它可以避免多次提交。

您重定向的位置取决于您 - 您只需重定向到同一视图(通常向用户显示成功消息),或重定向到另一个视图。

作为旁注:硬编码网址在Django中是一种不好的做法,你应该使用网址反向功能。