所以下面我看了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
答案 0 :(得分:3)
Django附带了一组试图解决一些常见问题的观点,例如:
由于这些视图可用于不同的模型,因此称为泛型。 在这种情况下,“Generic”与它们的实现方式无关 - 在较旧的Django版本中,函数视图是默认的(视图是函数),现在它们已成为类。
您的示例视图实际上是一个基于类的视图,它继承自基于类的通用视图。
答案 1 :(得分:3)
Class based view是任何 Django视图,作为Python类提供(而不是作为函数的视图)。
Django中的Generic base View是任何内置视图的基础,您可以为方便起见使用它们。例子:
答案 2 :(得分:1)
ListView
是一个基于类的通用视图(这意味着,它随Django一起提供,它实现了非常常见的功能,可以像以前那样继承自己进行更精确的处理)。另一方面,GroupListView
不是通用的 - 因为它不是Django的一部分。