【问题标题】:How to pass 2 arguments from template to views in django?如何将 2 个参数从模板传递到 django 中的视图?
【发布时间】:2020-07-05 07:43:15
【问题描述】:

所以我知道我可以像这样传递一个参数: {%url '...path...' argument%} 但我想传递 2 个参数,例如 {%url '...path...' argument1论据2%} 这是我的确切代码: search.html:

{% for id, title, thumbnail in videos%}
    <a href="https://www.youtube.com/watch?v={{id}}"><img src="{{thumbnail}}">{{title}}</a><p style="display:inline;">   |   </p><a href="{%url 'select' id title%}">Add to playlist</a>
    <br>
{%endfor%}

urls.py:

path('select/<id>/<title>', views.select, name='select'),

我收到以下错误: 找不到带有参数“('omPiA5AsGWw','PRESLAVA - POSLEDEN ADRES / Преслава - Последен адрес,2007')'的“选择”的反向。尝试了 1 种模式:['select/(?P[^/]+)/(?P[^/]+)$']

【问题讨论】:

  • 您的标题包含斜线。您应该指定&lt;path:title&gt;。尽管如此,我不确定在 url 中编码这些标题是否是个好主意。你可能想看看slugs:docs.djangoproject.com/en/3.0/glossary

标签: python django templates url view


【解决方案1】:

您的标题包含斜线。您应该将path 指定为路径转换器

path('select/&lt;id&gt;/&lt;<b>path:</b>title&gt;', views.select, name='select'),

话虽如此,我不确定在 url 中编码这样的标题是否是一个好主意,它会生成带有大量百分比编码字符的丑陋 URL。你可能想看看slugs instead [Django-doc]

【讨论】:

    【解决方案2】:

    我不确定你为什么要传递两个路径,但你可以考虑在模板中使用条件标签来避免大量硬编码模板

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-20
      • 1970-01-01
      • 2020-03-19
      • 2019-02-16
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 2015-09-18
      相关资源
      最近更新 更多