我對數據庫字段有一個唯一的約束。當提交副本時,我想避免發送500響應。我如何在DRF中捕獲這個錯誤並返回一個4XX響應呢?如何在django rest框架中捕獲數據庫錯誤?
3
A
回答
3
我知道我需要嘗試/除了一些東西塊,但我不知道什麼。我查看了DRF代碼,並且看到那個generics.ListCreateAPIView有一個名爲的方法創建。我在我的班級裏寫了一個名爲父創建的新函數,它與我繼承的簽名相同,其名稱爲創建,我將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
我希望這可以幫助別人。
+0
雖然這種方法可行,但如果你發現自己經常重複,你最好通過@ Cartucho關於使用定製異常處理程序 –
1
如果你想要這個只爲這一觀點覆蓋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.
"""
...
要處理它所有視圖,你可以定義一個全局異常處理程序,在這裏看到:http://www.django-rest-framework.org/api-guide/exceptions
相關問題
- 1. Django Rest框架slug_field錯誤
- 2. Django Rest框架數據庫錯誤異常處理
- 3. django rest框架多個數據庫
- 4. 如何獲得在Django的REST框架
- 5. CodeIgniter - 如何捕獲數據庫錯誤?
- 6. JSON中的Django REST框架FileField數據
- 7. Django的REST框架序列化錯誤
- 8. django rest框架屬性錯誤
- 9. Django的REST框架ModelSerializer保存錯誤
- 10. Django rest框架request.data引發錯誤
- 11. Django的REST框架UniqueValidator擲錯誤時更新舊數據
- 12. Django REST框架+ Django REST Swagger
- 13. 如何在Zend框架中捕獲SQL錯誤
- 14. 如何在CodeIgniter中捕獲數據庫錯誤PHP
- 15. 如何在codeignigter中捕獲數據庫錯誤
- 16. 如何在zend框架中記錄數據庫錯誤
- 17. 在Yii框架中獲取sql server數據庫的錯誤
- 18. Django的REST框架:在POST動態數據庫 - RelatedField或PrimaryKeyRelatedField
- 19. 如何在Django REST框架認證中使用Graphene GraphQL框架
- 20. Django的 - 數據表與REST框架
- 21. Django的REST框架:發佈數據
- 22. Django Rest框架ParentRelatedField元數據選擇
- 23. Django rest框架:加密響應數據
- 24. Django REST框架請求數據
- 25. 如何在刪除錯誤時在codeigniter中捕獲數據庫錯誤?
- 26. 在ColdFusion中捕獲錯誤數據庫錯誤
- 27. 如何篩選Django rest框架中的嵌套數據?
- 28. 如何在Django的REST框架
- 29. Django rest框架:如何全局更改錯誤響應格式
- 30. 如何禁用django rest框架返回HTML錯誤頁面?
HTTP: //www.django-rest-framework.org/api-guide/exceptions/試試這可能對你有所幫助 – jewelhuq