Django url模板标记与变量

时间:2014-04-16 16:06:49

标签: django

在我的urls.py中,我有这些内容

 # Dont use repeating patterns when only the end changes.
 url(r'^products/', include(patterns('foo.apps.bar.views',
    url(r'^$', 'product_family', name='products'),
    url(r'^(?P<page>[\w-]+)$', 'product_single'),
    ...
 ))),

这相当于:

www.demo.com/products/ - 带您进入我们查看所有产品的页面 www.demo.com/products/alpha - 带您进入alpha产品页面 - 如果alpha不存在,则会重定向到产品页面

我可以通过urls.py

中指定的'name'链接到这些页面
<a href="{% url 'products' %}">Products</a>

我怎样才能做同样的事情但是为它提供一个变量来带我到product_single?

<a href="{% url 'products/{{ products.slug }}' %}">Products</a>

我知道我可以在没有url标签的情况下写出链接,但是如果有语法可以像上面的href那样使用它,那我很好奇吗?

1 个答案:

答案 0 :(得分:5)

为您的单个产品网址命名。

url(
    r'^products/',
    include(
        patterns('foo.apps.bar.views',
            url(r'^$', 'product_family', name='products'),
            url(r'^(?P<page>[\w-]+)$', name='product_single'),
        )
    )
),

slug传递给新命名的网址。

<a href="{% url 'product_single' products.slug %}">Products</a>
{# OR #}
<a href="{% url 'product_single' page=products.slug %}">Products</a>