tun*_*nak 3 django django-views django-class-based-views
我必须为我的两个不同模型"目的地和区域"实现自动完成搜索,所以我应该根据我的两个不同查询集的查询结果向我的模板发送json响应.
您认为在这种情况下我应该使用哪种视图吗?谁能提供最佳实践?
Yuj*_*ita 13
你可以构建一个mixin用于a 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):
# ...
Run Code Online (Sandbox Code Playgroud)
您可以看到如何以独立于模型的方式构建此mixin,以便可以在Destinations和Regions模型中重用它.