django - 如果没有结果,类视图404
我有一个基于类的视图 -
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
但是它提示我的缩进有问题,可我看不出哪里错了。
1 个回答
5
可能是因为你没有写异常处理的部分,所以出现了问题。其实你不需要保留那个尝试的部分,因为你只是做了一个简单的条件判断。
另外,你的 if queryset == True:
这句是多余的,你可以直接写 if queryset:
。
可以试试这样的写法:
from django.http import Http404
# The rest of your code here...
if queryset:
return queryset
else:
raise Http404
想了解更多信息,可以查看 django关于返回404错误的文档。