Ошибка тега шаблона django: поймали NoReverseMatch при рендеринге - PullRequest
0 голосов
/ 20 августа 2011

Я пытаюсь использовать тег шаблона URL здесь, но он дает мне

TemplateSyntaxError at /pastebin/pastes/

Caught NoReverseMatch while rendering: Reverse for 'pastebin_paste_detail' with arguments '('',)' and keyword arguments '{}' not found.

Все выглядит правильно для меня, и когда я удаляю тег шаблона, шаблон отображается идеально. И сам общий вид pastebin_paste_detail тоже отлично работает. Это какая-то проблема с синтаксисом? Или тег шаблона не работает в Django 1.3?

Вот шаблон:

    <title>Paste List</title>
</head>
<body>

{% if object_list %}
    <h1>Paste List</h1>
<ul>
    {% for obj in object_list %}
    <li><a href="{% url pastebin_paste_detail paste.id %}">{{ obj }}</a>
    </li>
    {% endfor %}
</ul>

{% else %}
    <h1>No recent pastes</h1>
{% endif %}

Вот urlconf:

from django.conf.urls.defaults import *
from models import Paste

paste_info = {
        'queryset': Paste.objects.all(),
        }


urlpatterns = patterns('',
    # basically this generic view creates a form based on the specified model
    url(r'^$', 'django.views.generic.create_update.create_object', { 'model': Paste }),
    url(r'^paste/(?P<object_id>\d+)$', 'django.views.generic.list_detail.object_detail', paste_info, name='pastebin_paste_detail'),
    url(r'^pastes/$', 'django.views.generic.list_detail.object_list', paste_info),
)

1 Ответ

0 голосов
/ 20 августа 2011

Я считаю, что проблема в том, что вы передаете paste.id - но там нет объекта "paste"?

передать obj.id вместо XD

Это определяется тем, что аргумент отображается как ('',) (ничего не передается).

Поскольку ваш urlconf использует именованные аргументы для параметра, вы можете использовать именованные аргументы и здесь

{% url pastebin_paste_detail object_id=obj.id %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...