Тег шаблона url в шаблоне django

Я пытался использовать тег шаблона url в django, но не повезло,

Я определил свой 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 '' с аргументами '()' и аргументы ключевого слова '{}' not найдено.

Оригинальный трассировка (последний звонок последний): Файл "/Library/Python/2.5/site-packages/django/template/debug.py", строка 71, в render_node     result = 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 '' с аргументами '()' и аргументы ключевого слова '{}' не найдены.

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

Ответ 1

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

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

{% url show %}

не этот

{% url 'show'%}

Ответ 2

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

Смотрите здесь

Ответ 3

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

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

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

Также убедитесь, что вы используете полный путь:

{% url myapp.views.home %}

Фильтр шаблонов URL выглядит действительно неустойчивым. Постарайтесь сохранить будущую совместимость.

Ответ 4

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

{% url appname.views.show %}

Ответ 5

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

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