django模板标记错误:渲染时捕获NoReverseMatch

时间:2011-08-19 23:26:28

标签: django

我正在尝试使用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 :(得分:0)

我认为问题在于你传递了paste.id - 但是没有“粘贴”对象?

传递obj.id而不是XD

通过它将参数显示为('',)(没有传入任何内容)来识别它。

由于你的urlconf使用命名args作为参数,你可能也想在这里使用命名args

{% url pastebin_paste_detail object_id=obj.id %}