如何在模板上使用动态URL

时间:2017-02-08 07:08:43

标签: python django django-views django-urls

我使用的是python 2.7.11和django 1.10.2。我创建了网址并使用动态模板。

urls.py

url(r'^suits-anarkali/', include([
                url(r'^$', category_page, name="suits-anarkali"),
                url(r'^(?P<slug>[\w-]+)/$', category_page, name="suits-anarkali"),
                url(r'^(?P<slug>[\w-]+)/$', single_product, name='singleproduct'),
                url(r'^(?P<slug>[\w-]+)/(?P<singleproduct_slug>[\w-]+)/$', singleproduct, name="singleproduct"),
    ])
),

这是我的网址结构。如果我用slug调用category_page然后它正常工作但是当我用slug调用single_product时它会重定向到类别页面。 我已经尝试了很多时间,但它没有用。那么如何在模板上管理网址呢?

product.html

{% if slug %}
    <a href="{% url 'singleproduct' slug detail.slug %}">{{ detail.product_name }}</a>
{% else %}
    <a href="{% url 'singleproduct' detail.slug %}">{{ detail.product_name }}</a>
{% endif %}

1 个答案:

答案 0 :(得分:0)

url在第一个匹配regexp的基础上工作,并且因为下面的两行完全匹配相同的slug参数,当你用一个slug调用一个url时,它是category_page首先匹配所以django不会继续检查下一行。您需要对category_page进行一些更改,以使其与其他正则表达式不同。

    url(r'^(?P<slug>[\w-]+)/(?P<product>[\w-]+)/$', single_product, name='singleproduct'),
    url(r'^(?P<slug>[\w-]+)/$', category_page, name="suits-anarkali"),

read more on url tag