Reputation: 6555
So below I have just created by first Class based view after watching a Django Con EU talk video.
It works and understand what it does. I don't understand the difference between a Class based view or a generic class base view - which I have just build?
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
Upvotes: 2
Views: 1432
Reputation: 430
ListView
is a generic class-based view (which means, it comes with Django, implements very common features, and is free to be inherited from for more precise handling as you did). On the other hand, GroupListView
is not generic - as it is not part of Django.
Upvotes: 1
Reputation: 24844
A Class based view is any Django view provided as a Python Class (as opposed to views as functions).
A Generic base View in Django is the base for any of the built-in views which you can use for your convenience. Examples:
Those are based on django.views.generic.base.View
.
Upvotes: 3
Reputation: 50776
Django comes with a set of views that are trying to solve some common problems, eg:
Because these views can be used for different models, they are called generic. "Generic" in this case hasn't anything to do with the way they are implemented - in older Django version function views were the default (the views were functions), now they have became classes.
Your example view is actually a class-based view that inherits from a class-based generic view.
Upvotes: 5