【问题标题】:Is it possible to submit a GET form to two different views with two buttons?是否可以使用两个按钮将 GET 表单提交到两个不同的视图?
【发布时间】:2017-04-10 14:57:51
【问题描述】:

我有一个在一个视图上运行良好的 get 表单。

http://myurl.com/myapp/filter_objects/?risk__worktask=1&craft=3

我有另一个视图可以将此过滤后的列表导出为 pdf。现在我将结果存储在会话中并在我的 pdf 视图中从那里访问列表,但理想情况下,我想将过滤器参数从 GET 表单直接传递到 export_to_pdf 视图。

这在 django 中可能吗? [使用两个提交按钮将给定的 GET 表单发送到两个不同的 url?会很棒!

谢谢!

这是我的表格

<form method="get">

<div class="well">
  <h4 style="margin-top: 0">Filter Objects</h4>
    <div class="row">

        <div class="form-group col-sm-4 col-md-3">
            {{ filter.form.risk__worktask.label_tag }}
            {% render_field filter.form.risk__worktask class="form-control" %}
        </div>

        <div class="form-group col-sm-4 col-md-3">
            {{ filter.form.craft.label_tag }}
            {% render_field filter.form.craft class="form-control" %}
        </div>

    </div>

    <button type="submit" class="btn btn-primary">
        <span class="glyphicon glyphicon-search"></span> Search
    </button>

</div>

<div class="well">
  <h4 style="margin-top: 0">Filtered Ratings: {{ filter.qs.count }}</h4>
  <a href="{% url 'myapp:export_ratings_to_pdf_by_worktask' %}">
      <button type="button" class="btn btn-success">Export Filtered List ({{ filter.qs.count }} items)</button>
  </a>

</div>

【问题讨论】:

    标签: html django forms get


    【解决方案1】:

    为什么不使用按钮中的 formaction= 标签属性来覆盖表单操作?

    <form method="get" action="firstView">
      <input ...
      <input ...
      <button ...>Submit to first view</button>
      ..
      ..
      <button formaction="{% url 'myapp:secondView' %}" ...>Submit to second view</button>
    </form>
    

    它是一个 HTML5 属性,但所有主流浏览器都支持它。

    FormAction browser support

    【讨论】:

    • 这行得通!然而并不完美,因为我不得不在第二个按钮中硬编码formaction的目标url,而不使用漂亮的django url helpers。知道什么是正确的语法吗?
    • 硬编码是什么意思?,您可以轻松地使用formaction 值中的模板{% url ... %} 标记使其动态化。就像你对href 所做的一样。示例:&lt;button formaction={%url "myapp:export_ratings_to_pdf_by_worktask" %}&gt;
    • 效果很好,谢谢!我将接受答案并对其进行编辑以添加带有 url 标签的最终版本。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    相关资源
    最近更新 更多