1

因此,在观看 Django Con EU 谈话视频后,我刚刚创建了基于第一类的视图。

它工作并了解它的作用。我不明白基于类的视图或通用类基础视图之间的区别——我刚刚构建的?

class GroupListView(ListView):
    """
    List all Groups.
    """
    context_object_name = 'groups'
    template_name = 'contacts/home.html'

    def get_context_data(self, **kwargs):
        """
        Get the context for this view.
        """
        # Call the base implementation first to get a context.
        context = super(GroupListView, self).get_context_data(**kwargs)
        # Add more contexts.
        context['tasks'] = Upload.objects.filter(uploaded_by=self.request.user).order_by('-date_uploaded')[:5]
        context['unsorted'] = Contact.objects.unsorted_contacts(user=self.request.user).count()

        return context

    def get_queryset(self):
        """
        Get the list of items for this view. This must be an iterable, and may
        be a queryset (in which qs-specific behavior will be enabled).
        """
        queryset = Group.objects.for_user(self.request.user)
        return queryset 
4

3 回答 3

4

Django 带有一组试图解决一些常见问题的视图,例如:

  • 编辑对象
  • 显示单个对象
  • 显示对象列表

因为这些视图可以用于不同的模型,所以它们被称为泛型。在这种情况下,“通用”与它们的实现方式没有任何关系 - 在旧 Django 版本中,函数视图是默认值(视图是函数),现在它们已成为类。

您的示例视图实际上是一个基于类的视图,它继承自基于类的通用视图

于 2013-06-19T13:11:03.840 回答
3

基于类的视图是作为 Python 类提供的任何Django 视图(与作为函数的视图相反)。

Django 中的通用基础视图是任何内置视图的基础,您可以方便地使用这些视图。例子:

  • 列表显示
  • 创建视图
  • 详细视图

这些是基于django.views.generic.base.View.

于 2013-06-19T13:11:47.920 回答
1

ListView是一个通用的基于类的视图(这意味着,它随 Django 一起提供,实现了非常常见的功能,并且可以自由继承以进行更精确的处理)。另一方面,GroupListView它不是通用的——因为它不是 Django 的一部分。

于 2013-06-19T13:09:19.890 回答