2009-11-22 1 views
11

Я пытался использовать шаблон URL тег в Джанго, но не повезло,URL шаблонный тег в шаблоне Джанго

Я определил мой urls.py как этот

urlpatterns = patterns('', 
    url(r'^analyse/$',    views.home, name="home"), 
    url(r'^analyse/index.html',  views.index, name="index"), 
    url(r'^analyse/setup.html',  views.setup, name="setup"), 
    url(r'^analyse/show.html',  views.show, name="show"), 
    url(r'^analyse/generate.html', views.generate, name="generate"), 

Я определил шаблон URL-адреса в на мой взгляд, как этот

{% url 'show'%} 

тогда я получил сообщение об ошибке

Показ исключения при рендеринге: Реверс для '' show '' с аргументами '()' и аргументы ключевого слова '{}' не найдено.

Оригинал Traceback (самый последний вызов последнего): Файл " /Library/Python/2.5/site-packages/django/template/debug.py", линии 71, в render_node результат = node.render (контекст) Файл "/Library/Python/2.5/site-packages/django/template/defaulttags.py", линии 155, в визуализации nodelist.append (node.render (контекст)) Файл «/ Library/Python/2.5/site-packages/django/template/defaulttags.py ", строка 382, ​​в рендере raise e NoReverseMatch: обратное для '' show '' с аргументами '()' и аргументы ключевого слова '{}' not найденный.

Мне интересно, почему django не удалось отдать? Каков правильный способ определить его в tempalte?

ответ

0

Для чего стоит, у меня была такая же проблема, и пока я не помню причины, почему сейчас это разрешило это для меня. Пример из приложения SCRUM, над которым я работал.

url(r'^$', 'scrum.views.index', name='scrum-index'), 
10

Проблема заключается в ваших одиночных кавычках вокруг 'show'. Измените это на «показать», и это должно сработать для вас.

here См

+1

Он никогда не работал для меня, с одинарными или двойными кавычками. Удаление цитат работает, это странно. 1.5 работает с двойными кавычками. –

+0

Одиночные кавычки работают отлично, Django 1.6. Просто не забудьте указать свои параметры * вне * цитат! Взял меня навсегда, чтобы найти эту ошибку, система шаблонов с радостью сгенерировала пустые URL-адреса без указания ошибки. – Bogatyr

1

Вы, возможно, должны быть немного более конкретным, какой вид вы пытаетесь использовать:

{% url appname.views.show %} 
+0

Я пытаюсь узнать об этой функции - как она называется? Я искал документацию Django-Project по шаблонам, и они не упоминают '{% url ....}' – CodyBugstein

3

Вы, возможно, есть некоторые представления еще не реализованы. Похоже, что механизм шаблонов пытается найти все представления из шаблонов в urls.py, когда используется фильтр {% url ...%}.

Обычно это показывает ошибку для вашего последнего шаблона в urls.py.

Попробуйте прокомментировать любой шаблон URL, который вы еще не реализовали.

сделать Кроме того, что вы используете полный путь:

{% url myapp.views.home %} 

URL-адрес шаблона фильтра выглядит очень нестабильно. Старайтесь держать future compatibility.

12

ВАЖНО: это было для django 1.4. В django 1.5 это как раз наоборот.

попробовать с использованием имен URL-адреса без кавычек

{% url show %} 

это не

{% url 'show'%} 
+5

Плохая идея. Этот способ использования тега URL-адреса устарел и не будет работать в Django 1.5. – glarrain

+0

Да, это правда;) Я должен отредактировать :) – iskorum