我正在閱讀一些關於generic views的教程和書籍。在Django中使用哪個:ListView或list_detail?
在part 4 of the official tutorial,他們寫了一個例子像這樣
from django.conf.urls import patterns, include, url
from django.views.generic import DetailView, ListView
from polls.models import Poll
urlpatterns = patterns('',
url(r'^$',
ListView.as_view(
queryset=Poll.objects.order_by('-pub_date')[:5],
context_object_name='latest_poll_list',
template_name='polls/index.html')),
url(r'^(?P<pk>\d+)/$',
DetailView.as_view(
model=Poll,
template_name='polls/detail.html')),
url(r'^(?P<pk>\d+)/results/$',
DetailView.as_view(
model=Poll,
template_name='polls/results.html'),
name='poll_results'),
url(r'^(?P<poll_id>\d+)/vote/$', 'polls.views.vote'),
)
我也一直在讀The Definitive Guide to Django: Web Development Done Right, Second Edition,當他們談到一般的看法,他們寫了這樣
from django.conf.urls.defaults import *
from django.views.generic import list_detail
from mysite.books.models import Publisher
publisher_info = {
'queryset': Publisher.objects.all(),
'template_name': 'publisher_list_page.html',
}
urlpatterns = patterns('',
(r'^publishers/$', list_detail.object_list, publisher_info)
)
自己的例子,我應該是使用ListView
或list_detail
?他們都來自django.views.generic
。如果他們都可以使用,那麼有什麼區別(優勢和劣勢比較)?
如果有幫助,我會解釋我的目標:在我的項目中,我想列出工作訂單,然後我想要每個工作訂單的詳細視圖,其中還將包含該訂單的註釋列表(類似於每篇博文的評論)。
我不太瞭解基於類的通用視圖文檔。例如,對於['ListView'](https://docs.djangoproject.com/en/dev/ref/class-based-views/#list-views),爲什麼條目很短?我在哪裏可以找到所有方法和變量的列表? – hobbes3 2012-03-23 05:47:05
不幸的是,它是Django方面糟糕文檔的一部分(部分原因是因爲多重繼承)。但是你可以查看他們的子類:例如 - https://docs.djangoproject.com/en/dev/ref/class-based-views/#django.views.generic.list.MultipleObjectMixin – Jeff 2012-03-23 06:46:09