【发布时间】:2014-07-26 03:58:25
【问题描述】:
我是 python django 的新手。关注Django Tutorial > Part04 > Generic View 时,我无法使用
Detail View。实际上这是我在 StackOverflow 上的第一个问题,所以如果我有什么问题,请告诉我。非常感谢。
我想要什么?
- 我认为
url(r'^(?P<question_id>\d+)/$', views.DetailView.as_view(), name="detail")比url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name="detail")好。因为它更具可读性和直观性。 - 所以我不想更改
polls/urls.py。 - 如何使用详细视图,但在
views.py上保留<CUSTOM_SLUG>
源代码
django_project/polls/urls.py(目前不工作)
urlpatterns = patterns('',
url(r'^$', views.IndexView.as_view(), name="index"),
url(r'^(?P<question_id>\d+)/$', views.DetailView.as_view(), name="detail"),
url(r'^(?P<question_id>\d+)/results/$', views.results, name="results"),
url(r'^(?P<question_id>\d+)/vote/$', views.vote, name="vote"),
)
django_project/polls/urls.py(工作源,但我不想要这个。)
urlpatterns = patterns('',
url(r'^$', views.IndexView.as_view(), name="index"),
url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name="detail"),
url(r'^(?P<question_id>\d+)/results/$', views.results, name="results"),
url(r'^(?P<question_id>\d+)/vote/$', views.vote, name="vote"),
)
django_project/polls/views.py
class DetailView(generic.DetailView):
model = Question
template_name = "polls/detail.html"
错误信息
必须使用对象 pk 或 slug 调用通用详细视图 DetailView。
【问题讨论】:
-
我找到了一种解决方案。当我添加
pk_url_kwarg = "question_id"时,它起作用了!!! (来自docs.djangoproject.com/en/dev/ref/class-based-views/…)