我有一个基于类的自定义视图
# myapp/views.py from django.views.generic import * class MyView(DetailView): template_name = 'detail.html' model = MyModel def get_object(self, queryset=None): return queryset.get(slug=self.slug)
我想像这样传递slug参数(或其他参数到视图)
MyView.as_view(slug='hello_world')
我是否需要重写任何方法才能做到这一点?
如果你的urlconf看起来像这样:
url(r'^(?P<slug>[a-zA-Z0-9-]+)/$', MyView.as_view(), name = 'my_named_view')
那么该子弹将在你的视图函数(例如“ get_queryset”)中可用,如下所示:
self.kwargs['slug']
传递给该as_view方法的每个参数都是View类的实例变量。这意味着要添加slug作为参数,你必须在子类中将其创建为实例变量:
as_view
slug
# myapp/views.py from django.views.generic import DetailView class MyView(DetailView): template_name = 'detail.html' model = MyModel # additional parameters slug = None def get_object(self, queryset=None): return queryset.get(slug=self.slug)
那应该MyView.as_view(slug='hello_world')起作用。