URL-адреса Django - невозможно изменить URL в шаблоне - PullRequest
13 голосов
/ 23 ноября 2011

Я думаю, мне нужна вторая пара глаз.

Приведенный ниже пример не требует пояснений.

Все, что мне нужно, - это возможность изменить URL в шаблоне.

/ 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 ]

23 голосов
/ 02 июня 2014

Синтаксис изменился после Django 1.5 Вместо этого:

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

Теперь вы должны сделать это (строка вместо):

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

7 голосов
/ 23 ноября 2011

Вы можете попробовать это вместо:

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

/ шаблоны / Продукты / index.html

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

Если нет веской причины, по которой вы хотите задать пространство имен своим URL-адресам, гораздо проще просто использовать более точное имя в urls.py, а затем использовать это имя в теге шаблона url.

Обновление

Если вы получаете ошибку No module named urls, то это означает, что один из файлов urls.py не читается проектом django. Вы убедились, что products был добавлен к INSTALLED_APPS в файле settings.py? Также, пожалуйста, включите трассировку стека в ваш вопрос, чтобы было легче определить, где происходит ошибка.

...