我正在尝试使用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),
)
答案 0 :(得分:0)
我认为问题在于你传递了paste.id - 但是没有“粘贴”对象?
传递obj.id而不是XD
通过它将参数显示为('',)
(没有传入任何内容)来识别它。
由于你的urlconf使用命名args作为参数,你可能也想在这里使用命名args
{% url pastebin_paste_detail object_id=obj.id %}