【发布时间】:2017-07-22 17:54:40
【问题描述】:
我有一个名为LocationView 的基于django.views.generic.DetailView 的类,其设置如下:
class LocationView(DetailView):
model = Location
pk_url_kwarg = 'location_id',
template_name = 'accounts/locations/view_location.html'
以及对应的url定义:
url(
r'^accounts/(?P<account_id>\d+)/locations/(?P<location_id>\d+)/$'
LocationView.as_view(),
name='view_location',
)
当我尝试在浏览器中访问 LocationView 时,出现以下异常:
AttributeError: 通用详细视图 LocationView 必须调用 对象 pk 或 slug。
经过大量挖掘,我发现在某处,self.pk_url_kwarg 从'location_id' 更改为('location_id', ),这导致视图在运行self.kwargs.get(self.pk_url_kwarg) 时无法检索对象的pk,因为没有self.kwargs 中的键匹配修改后的 pk_url_kwarg 值。
为什么会发生这种情况,我该如何解决?
django.VERSION == (1, 11, 'final', 0)
【问题讨论】:
标签: django python-3.x django-class-based-views