I am working on a simple "to do list" app in django (two models: List and
Item). Trying to learn and make use of class-based generic views. I have
the following three display views working, but am requesting a quick code
review to see if there's anything I can do to improve my
usage/understanding of django's ListView and DetailView before I move on to
creating, updating and deleting. Thanks in advance for any advice.
# class-based generic views for my lists, a list's items, and item detail...
class MyListsView(ListView):
"""Display the current user's Lists"""
template_name = 'cmv_app/my_lists.html'
context_object_name = 'my_lists'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(MyListsView, self).dispatch(*args, **kwargs)
def get_queryset(self):
return
List.objects.filter(user=self.request.user).order_by('-last_modified')
class ListItemsView(ListView):
"""Display a list's items"""
template_name = 'cmv_app/list_items.html'
context_object_name = 'list_items'
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
self.list = get_object_or_404(List, pk=kwargs['list_id'])
request = list_valid_for_user(request, self.list) # security check
return super(ListItemsView, self).dispatch(request, *args, **kwargs)
def get_queryset(self):
return Item.objects.filter(list=self.list).order_by('-created_date')
def get_context_data(self, **kwargs):
context = super(ListItemsView, self).get_context_data(**kwargs)
context['list'] = self.list
return context
class ItemDetailView(DetailView):
"""Display detail for one list item"""
template_name = 'cmv_app/item_detail.html'
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
self.list = get_object_or_404(List, pk=kwargs['list_id'])
self.item = get_object_or_404(Item, pk=kwargs['item_id'])
request = list_valid_for_user(request, self.list) # security check
request = item_valid_for_list(request, self.item, self.list) #
security check
return super(ItemDetailView, self).dispatch(request, *args,
**kwargs)
def get_object(self):
return self.item
def get_context_data(self, **kwargs):
context = super(ItemDetailView, self).get_context_data(**kwargs)
context['list'] = self.list
return context
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/a251fbb4-6866-410f-bd1d-19c5fff216ef%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.