Django CBV与uuid作为参数

时间:2014-11-28 16:08:16

标签: python django django-class-based-views

我是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'

我做错了什么?

2 个答案:

答案 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)。