当前Django中“from django.views.generic import list_detail”是什么?

7 投票
2 回答
7000 浏览
提问于 2025-04-17 20:16

我理解得对吗?“from django.views.generic import list_detail”这个东西在Django里已经不再使用或者被删除了?

如果是这样的话,那现在应该用什么来替代呢?

谢谢,

--

@Gareth,谢谢你。

我还有个后续问题:怎么用ListView来替代list_detail.object_detail呢?

现在的代码,只改了导入部分,代码是:

from django.conf.urls.defaults import *
#from django.views.generic import list_detail
from django.views.generic.list import ListView

from announcements.models import Announcement
from announcements.views import *


announcement_detail_info = {
    "queryset": Announcement.objects.all(),
}

urlpatterns = patterns("",
    url(r"^(?P<object_id>\d+)/$", list_detail.object_detail,
        announcement_detail_info, name="announcement_detail"),
    url(r"^(?P<object_id>\d+)/hide/$", announcement_hide,
        name="announcement_hide"),
    url(r"^$", announcement_list, name="announcement_home"),
)

https://docs.djangoproject.com/en/dev/ref/class-based-views/generic-display/#listview 似乎并没有提供一个直接的替代方案来替换:

    url(r"^(?P<object_id>\d+)/$", list_detail.object_detail,
        announcement_detail_info, name="announcement_detail"),

如果说有什么建议的话,它似乎是建议添加一个额外的模型,并在这个模型上进行构建。

有没有一个简单直接的替代方法来替换list_detail.object_detail的调用,还是说需要更大的改动呢?

谢谢,

2 个回答

8

在导入了 django.views.generic.list.ListView 之后,

你只需要把 list_detail.object_detail 改成 ListView.as_view() 就可以了。

10

django.views.generic.list_detail 在 Django 1.3 版本中被 弃用了

从 Django 1.3 开始,基于函数的通用视图不再推荐使用,取而代之的是基于类的方法。

请使用 django.views.generic.list.ListView

撰写回答