当对象不存在时,我想覆盖对象的管理员默认详细信息视图以使用不同的模板,即
<mydomain>/admin/<myapp>/<mymodel>/<someidthatdoesexist>/
应该呈现默认的对象详细信息视图,并且
<mydomain>/admin/<myapp>/<mymodel>/<someidthatdoesNOTexist>/
应该呈现一个自定义模板,而不是默认的 404 错误。
从我读过的内容来看,我应该使用django.views.generic.detail.DetailView
,但我不确定如何实现我想要的。
我试过了:
<b>in urls.py</b>
url(r'^admin/<myapp>/<mymodel>/(?P<pk>\d+)/$', views.MyModelDetailView.as_view(), name='mymodel_detail'),
url(r'^admin/', include(admin.site.urls)),
<b>in models.py</b>
class MyModelDetailView(DetailView):
model = MyModel
def get(self, request, *args, **kwargs):
try:
self.model.objects.get(pk=kwargs['pk'])
return super(MyModelDetailView, self).get(request, **kwargs)
except Http404:
# render custom template
但我得到一个TemplateDoesNotExist
错误:
<myapp>/mymodel_detail.html
当对象存在时,我应该设置什么模板来呈现默认对象详细信息视图?
编辑
从这里给出的示例中,不需要设置模板...