【问题标题】:html - redirect to new url after form submission (django site)html - 提交表单后重定向到新的 url (django 站点)
【发布时间】:2017-07-21 16:10:45
【问题描述】:

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

这是怎么回事?

【问题讨论】:

  • 我认为您需要发布一些相关的视图功能,以便我们帮助您...
  • 你必须把在数据库中存储数据的脚本放在新的url中
  • 发布相关视图功能,有助于回答问题。
  • 向我们展示呈现此表单的 urls.py 文件,并共享您处理表单和表单数据的 views.py。然后我们可以为您提供适当的帮助。
  • 为什么需要更改表单中action 属性的值?

标签: django forms


【解决方案1】:

您似乎在这里有些困惑。表单的操作是浏览器发送数据的地方。显然,如果您不将其指向实际处理数据的视图,那么它将不会被保存。

要在发布后重定向,您的视图应该返回一个重定向。

【讨论】:

    【解决方案2】:

    当你声明一个带有空动作属性的表单时:

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

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

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

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

    用户在表单中输入的数据将被发送到视图request-success。但是这个视图可能只渲染了确认页面的模板。如果您想正确处理表单中的数据,您必须将&lt;form&gt;action 属性设置为相同的视图,或者更简单,将其保留为空。

    【讨论】:

      【解决方案3】:

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

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

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

      只需将 'app_name:data-update' 替换为适当的 url。

      【讨论】:

        猜你喜欢
        • 2019-01-19
        • 1970-01-01
        • 2021-10-29
        • 1970-01-01
        • 2016-03-15
        • 2020-07-14
        • 1970-01-01
        • 2012-05-17
        • 2014-08-22
        相关资源
        最近更新 更多