Python 是否可以在一个请求中混合多个请求?
我已经问过这个问题,但没有人回答。我想再问一次,因为我很确定这个问题很容易被比我更了解Django(我什么都不知道)的人解决。我有一个搜索工具。当我使用它时,它搜索我的五个Django模型,从而向我的RESTAPI发送五个GET请求。恼人的是,它在我的控制台中显示了五个请求。有没有办法“混合”这五个请求,只显示为一个请求?或者,有没有办法在多个型号上执行单个请求?请教我 编辑:我的一个视图执行查询的示例:Python 是否可以在一个请求中混合多个请求?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我已经问过这个问题,但没有人回答。我想再问一次,因为我很确定这个问题很容易被比我更了解Django(我什么都不知道)的人解决。我有一个搜索工具。当我使用它时,它搜索我的五个Django模型,从而向我的RESTAPI发送五个GET请求。恼人的是,它在我的控制台中显示了五个请求。有没有办法“混合”这五个请求,只显示为一个请求?或者,有没有办法在多个型号上执行单个请求?请教我 编辑:我的一个视图执行查询的示例: class ProjectList(generics.ListCreateAPIView)
class ProjectList(generics.ListCreateAPIView):
serializer_class = ProjectSerializer #My serializer
def get_queryset(self):
queryset = Project.objects.filter(user=self.request.user)
query = self.request.QUERY_PARAMS.get('query', None)
# Perf enhancements :
queryset = queryset.prefetch_related('user', 'tasks')
# ---
if query is not None:
queryset = queryset.filter(
Q(name__icontains=query) |
Q(created_on__icontains=query)).order_by('name')
return queryset
def pre_save(self, obj):
obj.user = self.request.user #This links the project to an user
#Don't think it's useful here but anyway
我还有四个视图进行查询,每个模型一个。他们都像这一个,所以我不认为这是重要的张贴
这些查询是在我的javascript文件(我使用angularjs)中进行的,如下所示:
this.doSearch = function(query) {
if (query.length > 2) {
this.searchengine.projects = $resource('/api/projects').get({query: query});
this.searchengine.tasks = $resource('/api/tasks').get({query: query});
this.searchengine.comments = $resource('/api/comments').get({query: query});
}
}
您可以为搜索创建一个新端点,该端点返回多种类型的对象:
class SearchView(APIView):
def get(self, request, format=None):
data = []
queryset = Project.objects.filter(user=request.user)
query = self.request.QUERY_PARAMS.get('query', None)
queryset = queryset.filter(
Q(name__icontains=query) |
Q(created_on__icontains=query)).order_by('name')
serializer = ProjectSerializer(queryset, many=True)
data.extend(serializer.data)
#do the same for other types of objects
return Response(data)
我们这里不提问。为了吸引更多的注意力,你可以把它写下来。这确实是一个复制品,因为我在我的帖子里说我是在转载这个问题。有没有办法“撞”到你链接的那个,并希望有人回答?好的,谢谢@gertvdijk!但是我只有一个名声。你要做什么?请在这里添加部分代码。与django视图类似,django视图将被调用并向您的rest api发送请求。@Roflnaut在站点上投入一些时间,您将获得更多的声誉,以便能够设置奖金。同时,您可以编辑原始问题以包含更多详细信息。努力吧。让它变得棒极了哦,如果你有什么要添加的,请编辑你的评论,而不是发布个人评论。