Django URL标签多个参数

21 投票
3 回答
36712 浏览
提问于 2025-04-15 21:13

我有两个相似的代码,第一个代码运行得很好,结果也符合预期。

urlpatterns = patterns('',
                       (r'^(?P<n1>\d)/test/', test),
                       (r'', test2),
{% url testapp.views.test n1=5 %}

但是,当我添加第二个参数后,结果却变成了空字符串。

urlpatterns = patterns('',
                           (r'^(?P<n1>\d)/test(?P<n2>\d)/', test),
                           (r'', test2),)


{% url testapp.views.test n1=5, n2=2 %}

视图的签名:

def test(request, n1, n2=1):

3 个回答

2

https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#url

从Django 1.5开始,有个警告:别忘了在函数路径或模式名称周围加上引号!

{% url 'some-url-name' arg1=v1 arg2=v2 %}
4

这里有一个我实际使用这个技巧的例子。希望这能帮到你:

{% if stories %}
  <h2>Stories by @{{author.username}}</h2>
  <ul>
    {% for story in stories %}
      <li><a href="{% url 'reader:story' author.username story.slug %}">{{story.title}}</a></li>
    {% endfor %}
  </ul>
{% else %}
  <p>@{{author.username}} hasn't published any stories yet.</p>
{% endif %}
35

试试这个

{% url testapp.views.test n1=5,n2=2 %}

在参数之间不要加空格

更新:Django 1.9(可能更早的版本也适用)开始,正确的方法是省略逗号,用空格来分隔参数:

{% url testapp.views.test n1=5 n2=2 %}

撰写回答