【问题标题】:Current parameters in url set in the next url in djangourl中的当前参数在django的下一个url中设置
【发布时间】:2022-01-26 10:45:42
【问题描述】:

我有一个这样的网址

http://127.0.0.1:8000/orders/?from=&to=&status=1

我在该页面中有一个按钮来导出所有订单,但如果我有一个状态,我需要将其作为该 url 中的参数发送以在导出前进行过滤

<a href="{% url 'orders:export' %}">Export</a>

如何将参数发送到该导出函数

【问题讨论】:

  • 试试这个:{% url 'orders:export' from to status %} 和网址中的path('export/&lt;str:from&gt;/&lt;str:to&gt;/&lt;int:status&gt;', views.export_view, name='export') 然后在你的视图中def export_view(request, from, to, status):

标签: python django


【解决方案1】:

您可以在 url 之后简单地附加您的查询字符串,如下所示

<a href="{% url 'orders:export' %}?from=&to=&status=1">Export</a>

【讨论】:

    【解决方案2】:

    您需要对 href 中的字符串进行 HTML 编码,因此:

    &lt;a href="{% url 'orders:export' %}<strong>?from=&amp;amp;to=&amp;amp;status=1</strong>"&gt;Export&lt;/a&gt;

    如果要将变量的值传递给参数,请使用|urlencode template tag [Django-doc]

    &lt;a href="{% url 'orders:export' %}?from={{ from<strong>|urlencode</strong> }}&amp;amp;to={{ to<strong>|urlencode</strong> }}&amp;amp;status={{ status<strong>|urlencode</strong> }}"&gt;Export&lt;/a&gt;

    【讨论】:

    • 只是为了好奇,有必要对查询字符串进行编码,因为我没有进行任何类型的编码就实现了,它工作得很好
    • @Polymath:假设from 包含'foo&amp;bar=2' 作为值,那么您创建一个无效的额外属性bar,或者例如,如果&amp; 之后的项目是lt; 那么这将不会被转换为<`,而是&lt;。如果浏览器无法将其与编码值匹配并编码奇怪的字符,通常浏览器会将其保留为 & 符号,但总会有一个变化,您最终会得到一个“意外”匹配。很多软件最终都会失败,因为人们从未预料到这些值会包含问号、与号、等号、双引号等。
    猜你喜欢
    • 1970-01-01
    • 2019-06-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2020-10-23
    • 1970-01-01
    相关资源
    最近更新 更多