如果忽略条件,则Django Rest框架

2024-09-30 12:27:31 发布

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

我创建了一个返回PDF的端点。 我有一个条件来检查资产是否存在,但是这个条件总是被忽略。如果条件不存在,则端点返回500而不是404

网址:

 url(r'^report/asset/(?P<pk>[0-9]+)$', api.DemoPDFView.as_view()),

在视图.py在

^{pr2}$

插件可用:

http://django-easy-pdf.readthedocs.io/en/v0.2.0-dev1/ 

Tags: pyreportview视图apiurlpdfas
3条回答

更好的版本:

from django.shortcuts import get_object_or_404
asset = get_object_or_404(Asset, pk=pk)

如果Asset不存在,它将自动引发404错误。在

由于您的代码不在视图本身中,而是在get_context_data()方法中,我想正如@schwobaseggl在注释中提到的那样,正确的方法是引发Http404异常。在

from django.http import Http404
...
if not Asset.objects.filter(id=pk).exists():
    raise Http404
else:
    ...

虽然我建议使用@Eugene Morozov answer,但是您当前代码的问题是您没有在if中返回响应

if not Asset.objects.filter(id=pk).exists():
    return Response(status=status.HTTP_404_NOT_FOUND)

相关问题 更多 >

    热门问题