2024-09-30 12:27:31 发布
网友
我创建了一个返回PDF的端点。 我有一个条件来检查资产是否存在,但是这个条件总是被忽略。如果条件不存在,则端点返回500而不是404
500
404
网址:
url(r'^report/asset/(?P<pk>[0-9]+)$', api.DemoPDFView.as_view()),
在视图.py在
插件可用:
http://django-easy-pdf.readthedocs.io/en/v0.2.0-dev1/
更好的版本:
from django.shortcuts import get_object_or_404 asset = get_object_or_404(Asset, pk=pk)
如果Asset不存在,它将自动引发404错误。在
Asset
由于您的代码不在视图本身中,而是在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
if not Asset.objects.filter(id=pk).exists(): return Response(status=status.HTTP_404_NOT_FOUND)
更好的版本:
如果
Asset
不存在,它将自动引发404错误。在由于您的代码不在视图本身中,而是在get_context_data()方法中,我想正如@schwobaseggl在注释中提到的那样,正确的方法是引发Http404异常。在
虽然我建议使用@Eugene Morozov answer,但是您当前代码的问题是您没有在
if
中返回响应相关问题 更多 >
编程相关推荐