Ale*_*exH 5 django django-rest-framework
我对数据库字段有唯一的约束。当提交重复时,我想避免发送 500 响应。如何在 DRF 中捕获此错误并返回 4XX 响应?
我知道我需要在某些地方放置一个 try/ except 块,但我不知道是什么。我查看了 DRF 代码,发现 generics.ListCreateAPIView 有一个名为create的方法。我在我的类中编写了一个名为父create的新函数,它与我继承的函数(名为create )具有相同的签名,并且我将 try/ except 放在该函数周围。
最后看起来像这样:
class MyModelList(generics.ListCreateAPIView):
def get_queryset(self):
return MyModel.objects.all()
def create(self, request, *args, **kwargs):
try:
return super(MyModelList, self).create(request, *args, **kwargs)
except IntegrityError:
raise CustomUniqueException
serializer_class = MyModelSerializer
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助别人。
如果您只想将此视图覆盖handle_exception:
class MyAPIView(APIView):
...
def handle_exception(self, exc):
"""
Handle any exception that occurs, by returning an appropriate
response,or re-raising the error.
"""
...
Run Code Online (Sandbox Code Playgroud)
要处理所有视图,您可以定义一个全局异常处理程序,请参见此处: http: //www.django-rest-framework.org/api-guide/exceptions
| 归档时间: |
|
| 查看次数: |
1841 次 |
| 最近记录: |