我有一段使用django.views.generic.list_detail的代码,在旧版本的python和django中运行良好。我知道list_detail在当前版本中不再存在,已被django.views.generic.list.ListView取代。但我还没有想出如何替换我的代码,以便像以前那样工作。我查了this question但我仍然没有线索。
这是我的代码(我是从here获得的):
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',
'template_object_name': 'publisher', >> **
'extra_context': {'book_list': Book.objects.all}
}
urlpatterns = patterns('',
(r'^publishers/$', list_detail.object_list, publisher_info)
)
{% extends "base.html" %}
{% block content %}
<h2>Publishers</h2>
<ul>
{% for publisher in publisher_list %}
<li>{{ publisher.name }}</li>
{% endfor %}
</ul>
{% endblock %}
我不想让我的views.py
参与新代码。
有人可以帮我吗?感谢。
答案 0 :(得分:0)
您可以为as_view方法提供其他参数。例如:
urlpatterns = patterns('',
(r'^publishers/$', ListView.as_view(
queryset=Publisher.objects.all(),
template_name='publisher_list_page.html'
)))
但在您的情况下,您应该继承通用视图并提供自己的get_context_data方法,因为基于类的通用视图不再支持extra_context
关键字