Django URL - 无法在模板中反转url

时间:2011-11-23 05:23:09

标签: django django-urls

我想我需要第二双眼睛。

下面的例子应该是自我解释的。

我只需要能够在模板中反转我的网址。

/urls.py

urlpatterns = patterns('',
    (r'^products/', include('products.urls')),
)

/products/urls.py

from django.conf.urls.defaults import patterns, url

urlpatterns = patterns('products.views',
    url(r'^$', view="index", name="index"),
)

/templates/products/index.html

<a href="{% url products:index %}"> Products </a>

更新

完整的堆栈跟踪 - http://pastebin.com/9nLp4uP5

2 个答案:

答案 0 :(得分:20)

Django 1.5之后语法发生了变化 而不是这样做:

<a href="{% url products_index %}"> Products </a>

你现在应该这样做(改为字符串):

<a href="{% url 'products_index' %}"> Products </a>

答案 1 :(得分:6)

您可以尝试这样做:

urlpatterns = patterns('products.views',
    url(r'^$', view="index", name="products_index"),
)

/templates/products/index.html

<a href="{% url products_index %}"> Products </a>

除非有令人信服的理由想要命名您的网址,否则只需在urls.py中使用更准确的名称,然后在url模板标记中使用该名称就更容易了。

<强>更新

如果你得到的错误是No module named urls,那么这意味着django项目没有读入其中一个urls.py文件。您确定已将products添加到INSTALLED_APPS文件中的settings.py吗?此外,请在您的问题中包含堆栈跟踪,以便更容易识别错误发生的位置。