我有一个基于类的Django视图:
class LocationView(TemplateView):
我在我的网址调度程序中定义了一个命名参数:
url(r'^locations/(?P<id>\d+)/$', LocationView.as_view(), name="location")
我知道我可以在像id
这样的类方法中访问我的get_context_data
参数,在那里我可以将** kwargs传递给方法本身。但是,我有点想能够在类本身中访问参数,因为我从API中获取了一些数据,这些数据将在整个类中以不同的方式用于不同的容量。有没有办法做到这一点?
答案 0 :(得分:3)
您可以在为基于类的视图调用dispatch()之后运行的任何方法中执行self.kwargs
。
如果你正在为一个模型做一个详细视图,就好像你正在做的那样,你应该使用一个基于通用类的视图来为你做这个。
为什么不尝试以下方法:
from django.views.generic import DetailView
class LocationView(DetailView):
queryset = LocationModel.objects.all()
template_name = 'location_of_detail_template.html'
然后更新您的urls.py文件并将正则表达式组的名称从id更改为pk,以使其全部自动运行。