我有以下基于类的视图 -
class DeployFilterView(generics.ListAPIView):
serializer_class = DefinitionSerializer
def get_queryset(self):
jobname = self.request.GET.get('jobname')
if jobname.count("\\") == 1:
jobname = jobname.replace("\\", "")
queryset = Jobmst.objects.db_manager('Admiral').filter(jobmst_name=jobname).exclude(jobmst_prntname__isnull=True, jobmst_dirty='X')
else:
parent, job = jobname.rsplit('\\', 1)
queryset = Jobmst.objects.db_manager('Admiral').filter(jobmst_prntname=parent, jobmst_name=job).exclude(jobmst_dirty='X')
return queryset
我想让它返回404响应,如果任何一个查询集都没有返回信息,我该如何进行链接呢?
我正在使用Django Rest Framework。现在,如果我调用一个URL并且没有数据,则传递200 OK,我不想要。以下是我正在尝试的内容 -
class DeployFilterView(generics.ListAPIView):
serializer_class = DefinitionSerializer
def get_queryset(self):
jobname = self.request.GET.get('jobname')
if jobname.count("\\") == 1:
jobname = jobname.replace("\\", "")
queryset = Jobmst.objects.db_manager('Admiral').filter(jobmst_name=jobname).exclude(jobmst_prntname__isnull=True, jobmst_dirty='X')
else:
parent, job = jobname.rsplit('\\', 1)
queryset = Jobmst.objects.db_manager('Admiral').filter(jobmst_prntname=parent, jobmst_name=job).exclude(jobmst_dirty='X')
try:
if queryset == True:
return queryset
else:
raise exceptions.DoesNotExist
但它没有说我的缩进是错的,但我不知道它是怎么回事。
答案 0 :(得分:4)
这可能会引发一个问题,因为你没有除了阻止。你不需要保留try块;因为你只是在做一个if / else语句。
此外,您的if queryset == True:
是不必要的,您可以if queryset:
。
尝试类似:
from django.http import Http404
# The rest of your code here...
if queryset:
return queryset
else:
raise Http404