Django url标签多个参数

Posted

技术标签:

【中文标题】Django url标签多个参数【英文标题】:Django url tag multiple parameters 【发布时间】:2011-02-04 06:24:27 【问题描述】:

我有两个相似的代码。第一个按预期工作。

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):

【问题讨论】:

【参考方案1】:

试试

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

参数之间没有空格

更新: 从Django 1.9(可能更早)开始,正确的方法是省略逗号并使用空格分隔参数:

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

【讨论】:

在 Django Docs 中有没有关于这个特性的文档?【参考方案2】:

这是我使用这种技术的一个实际示例。也许这会有所帮助:

% 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 %

【讨论】:

【参考方案3】:

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

来自 Django 1.5 警告不要忘记在函数路径或模式名称周围加上引号!

% url 'some-url-name' arg1=v1 arg2=v2 %

【讨论】:

以上是关于Django url标签多个参数的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将关键字参数传递给 Django % url % 模板标签?关键字参数值应该来自 html 标签

是否可以将查询参数传递给 Django % url % 模板标签?

Django:在 URL 模板标签中保留 GET 参数

在 django 模板 URL 标签中传递参数

Django 模板标签插入或替换 URL 参数

对于 Django 模板 %url% 标签,我如何从通用视图上下文中找到所有 URL 参数,而不仅仅是最后一个?