我是Django的新手,虽然我对FBV很好,但我正在努力学习CBV,而且我一度陷入困境。我在urls.py中有这个:
uuid='\w\w\w\w\w\w\w\w-\w\w\w\w-\w\w\w\w-\w\w\w\w-\w\w\w\w\w\w\w\w\w\w\w\w'
url(r'^someroute/$', MyView.as_view(), name="my_list_view"),
url(r'^someroute/(?P<uuid>%s)/$' % uuid, MyDetailView.as_view(), name="my_detail_view"),
第一个工作得很好。它扩展了ListView。第二个扩展了DetailView,当我用uuid点击正确渲染的链接时,我得到了这个错误:
Generic detail view MyDetailView must be called with either an object pk or a slug.
我浏览网络寻找解决方案,遇到其中几个,但似乎没有解决我的问题。 这是MyDetailView(到目前为止我只想让它呈现一个空模板,然后我会继续):
class MyDetailView(DetailView):
model = MyModel
template_name = 'someroute/my_detail.html'
slug_filed = 'uuid' #here I tried several variations, but nothing
我没有尝试使用slug_field,而是尝试了:
pk_url_kwarg = 'uuid'
但后来我得到了这个错误:对于带有基数为10的int()的无效文字:'1c149e4a-8629-464f-9c62-2742f82e6d96'
我做错了什么?
答案 0 :(得分:2)
class MyDetailView(DetailView):
slug_url_kwarg = 'uuid'
slug_field = 'uuid'
model = MyModel
template_name = 'someroute/my_detail.html'
答案 1 :(得分:1)
属性为slug_field
(不是slug_filed)。