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
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With