Django类视图404如果没有结果

2024-06-06 05:21:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下基于类的观点-

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响应,如果任何一个queryset都没有返回任何信息,我该如何将其链接进去?在

我使用的是Django Rest框架。现在,如果我调用一个URL,但没有数据,它会传递一个我不想要的200 OK。下面是我正在尝试的-

^{pr2}$

但它没有说我的缩进是错误的,但我不明白它是怎么回事。在


Tags: nameselfdbgetobjectsmanagerfilterexclude
1条回答
网友
1楼 · 发布于 2024-06-06 05:21:46

它可能会抛出一个问题,因为你没有except块。您不需要保留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

有关详细信息,请查看django's documentation on returning 404 errors。在

相关问题 更多 >