Django reverse()和CBV
我知道我在做一些愚蠢的事情,但我似乎找不到(一定是愚蠢的) 在url.py中,我有:Django reverse()和CBV,django,django-class-based-views,Django,Django Class Based Views,我知道我在做一些愚蠢的事情,但我似乎找不到(一定是愚蠢的) 在url.py中,我有: urlpatterns=patterns(... ... url(r'(?P<cat>[-\w]*)/(?P<slug>[-\w]+)/$', PlantDetailView.as_view(), name='detail-view'), .... ) 但我得到以下NoReverseMatch错误: 找不到参数为“()”且关键字参数为“{u'slug':
urlpatterns=patterns(...
...
url(r'(?P<cat>[-\w]*)/(?P<slug>[-\w]+)/$', PlantDetailView.as_view(), name='detail-view'),
....
)
但我得到以下NoReverseMatch错误:
找不到参数为“()”且关键字参数为“{u'slug':u'foo',u'cat':u'bar'}”的“详细视图”的反转。
我试过使用*args
和**kwargs
,但没有成功
谢谢你的帮助 抱歉,这是名称空间问题 由于“plants”URL包含在main URL.py中,因此解决方案是:
{% url 'plants:detail_view' cat=category_slug slug=plant.slug %}
如果我说url文件是plants/url.py
,我相信Samuele Mattiuzzo会抓到的,但我忽略了那个重要的细节
无论如何,感谢您的帮助。django的新语法在模板中的视图名称周围没有
”
({%url-detail-view-cat=category\u-slug-slug=plant.slug%}
)ps:不要使用*
,因为它意味着0或更多。在您的例子中,这将产生一个//这是slug
类型的url,这是错误的。使用+
instead已经尝试了没有单引号的语法,但它不起作用:无法解析剩余部分:“-view”来自“detail view”。Django 1.5中“url”的语法已更改,请参阅文档。
此外,我在RE中使用*
也是有原因的。我们可以稍后再讨论。因此我尝试重新命名以详细查看,因为-
似乎是模板中的一个问题。但是仍然没有爱:“url”需要一个非空的第一个参数。Django 1.5中的语法已更改,请参阅文档。
{% url 'plants:detail_view' cat=category_slug slug=plant.slug %}