【问题标题】:How to append two separate forms to the end of a url in Django如何在 Django 中将两个单独的表单附加到 url 的末尾
【发布时间】:2019-12-17 07:37:56
【问题描述】:

我正在尝试创建一个 django Web 应用程序,但遇到了表单问题。我有一个简单的index.html 设置,在页面上有两个单独的常规 html 表单。一个用于过滤,另一个用于排序。目前,我可以让过滤或排序工作,但不能同时进行。我认为这是因为我在某处缺少对 django 的基本理解。是的,我已经完成了教程。

我已尝试手动将 URL 附加到我的 url 配置中,但这并没有按预期工作。

<form action="" method="get">
    {% for filter in view.all_filters %}
        <label>
            <input type="checkbox" name="filter" value="{{ filter }}">
            {{ filter }}
        </label>
    {% endfor %}
    <input type="submit" value="Apply Filters">
</form>
<form action="." method="get">
    <label>
        Sort By
        <select name="order_by">
            <option value="name">Name</option>
            <option value="description">Description</option>
            <option value="cvssBaseScore">Cvss Base Score</option>
            <option value="cvssV3BaseScore">Cvss V3 Base Score</option>
        </select>
    </label>
    <input type="submit" value="Submit">
</form>

我希望网址能够附加 ?filters=one&amp;filters=two&amp;order_by=name 之类的内容。

【问题讨论】:

  • 您不了解 HTML 表单的工作原理。只需使用一个
    ,以便在提交时,将表单中包含的所有输入值附加到 url。
  • 这是有道理的,并且是我使用的更改,我只是想知道是否有更好的方法来做到这一点。我对前端相当陌生,所以这对我来说有点赶上,如果这个问题看起来很愚蠢,很抱歉。
  • 无需道歉,您必须从某个地方开始 :-) 不,没有更好的方法。
    元素封装了它提交的所有数据,如果您在 HTML 页面中放置两个单独的表单,那么您有意只希望其中一个表单与其数据一起提交。两个表单的典型示例是一个页面,其中您有一个登录表单和一个“输入您的详细信息”表单,因此用户可以在购买时选择是否登录。
  • 请注意,Django Forms 不必一对一映射到 HTML
    s。你可以有一个 Django 视图,它在一个模板中呈现两个 Django 表单,但在 HTML 中只有一个
    来提交这两个表单。如果您想同时更新两个不同的模型,就会出现这种情况。
  • 这是有道理的。 Django 似乎自动化了很多我只在边缘理解的事情。我认为这足以回答我的问题,所以我应该将其标记为已回答。谢谢德克!

标签: python django


【解决方案1】:

这个问题与 Django 无关,而是与 HTML 表单的工作原理有关:

&lt;form&gt; 元素封装了它提交的所有数据 (&lt;input&gt;s),因此如果您在 HTML 页面中放置两个单独的表单,那么您有意只希望其中一个表单与其数据一起提交。

只需将两个输入(过滤器和 order_by 输入)放在同一个 &lt;form&gt; 元素中,以便在单击任一提交按钮时都提交。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多