2013-05-21 32 views

回答

11

你可以建立一個mixin用於ListView。您可以搭載各種ListView功能,如分頁/模型/創建qs。

雖然沒有太大的不同,但只是建立一個普通的generic.base.View

from django.core import serializers 

class AJAXListMixin(object): 

    def dispatch(self, request, *args, **kwargs): 
     if not request.is_ajax(): 
      raise http.Http404("This is an ajax view, friend.") 
     return super(AJAXListMixin, self).dispatch(request, *args, **kwargs) 

    def get_queryset(self): 
     return (
      super(AJAXListMixin, self) 
      .get_queryset() 
      .filter(ajaxy_param=self.request.GET.get('some_ajaxy_param')) 
     ) 

    def get(self, request, *args, **kwargs): 
     return http.HttpResponse(serializers.serialize('json', self.get_queryset())) 


class AjaxDestinationListView(AJAXListMixin, generic.ListView): 
    # ... 

你或許可以看到如何構建這個混入模型中獨立的方式,以便它可以在您的目的地和地區的模型可以重複使用。

相關問題