html - 表单提交后重定向到新的URL(django站点)

时间:2017-03-02 04:26:23

标签: django forms

我正在尝试按钮在用户提交表单后将用户重定向到新的网址。这就是它现在的样子,它正常工作,所有数据都被发送到django数据库。

<form method='POST' action='' class="col-md-6 col-md-offset-7" style="background-color: lightgreen; border-radius: 10px">

但是,当我将动作更改为 action="{% url 'ridesharing:request-success' %}", 重定向有效,但数据不会进入我的django数据库。

这里发生了什么?

3 个答案:

答案 0 :(得分:0)

这里似乎有些混乱。表单的操作是浏览器发送数据的位置。显然,如果你没有在实际处理数据的视图中指出它,那么它就不会被保存。

要在帖子后重定向,您的视图应返回重定向。

答案 1 :(得分:0)

声明具有空操作属性的表单时:

<form method='POST' action=''>

POST数据将发送到相同的网址。这很有用,因为如果表单中有一些错误,很容易重新显示它,所有字段都填充了用户输入的值。然后,当表单生效时,将对确认页面进行重定向。

当您以这种方式声明表单时:

<form method='POST' action='{% url 'ridesharing:request-success' %}'>

用户在表单中输入的数据将发送到视图request-success。但是这个视图可能只呈现确认页面的模板。如果您想要正确处理表单中的数据,则必须将action的{​​{1}}属性设置为同一视图,或者更容易,将其保留为空。

答案 2 :(得分:0)

我不明白为什么不接受 Daniel Roseman 的帖子作为答案。当我想将创建表单重定向到其更新表单时,它对我很有帮助。

基本上在应用程序的视图中,我将 get_success_url 定义为 reverse_lazy 以进行数据更新。

def get_success_url(self):
    return reverse_lazy('app_name:data-update')

只需将“app_name:data-update”替换为适当的网址即可。