Django框架核心异常

【图书介绍】《Django 5企业级Web应用开发实战(视频教学版)》_django 5企业级web应用开发实战(视频教学版)-CSDN博客

《Django 5企业级Web应用开发实战(视频教学版)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com)

Django框架的核心异常处理类定义在django.core.exceptions模块中,具体异常类型如下:

1. AppRegistryNotReady异常

定义:exception AppRegistryNotReady。

说明:在应用程序加载过程中,尝试使用模型初始化ORM会引发此异常。

2. ObjectDoesNotExist异常

定义:exception ObjectDoesNotExist。

说明:模型不存在(Model.DoesNotExist)的异常基类。针对ObjectDoesNotExist的try/except操作,将会捕获所有模型的DoesNotExist异常。请参看get()方法。

3. EmptyResultSet异常

定义:exception EmptyResultSet。

说明:如果查询不会返回任何结果,则在查询生成期间可能会引发EmptyResultSet异常。大多数的Django项目不会遇到此异常,但是该异常对于实现自定义查询和表达式可能会很有用。

4. FieldDoesNotExist异常

定义:exception FieldDoesNotExist。

说明:当模型或父级模型上不存在请求的字段时,模型的_meta.get_field()方法会引发FieldDoesNotExist异常。

5. MultipleObjectsReturned异常

定义:exception MultipleObjectsReturned。

说明:Model.MultipleObjectsReturned异常类的基类。针对MultipleObjectsReturned的try/except操作,将会捕获所有模型的MultipleObjectsReturned异常。请参看get()方法。

6. SuspiciousOperation异常

定义:exception SuspiciousOperation。

说明:当用户执行了从安全角度来看应视为可疑的操作(例如篡改会话Cookie)时,会引发SuspiciousOperation异常。该类的子类清单包括:

  • DisallowedHost
    DisallowedModelAdminLookup
    DisallowedModelAdminToField
    DisallowedRedirect
    InvalidSessionKey
    RequestDataTooBig
    SuspiciousFileOperation
    SuspiciousMultipartForm
    SuspiciousSession
    TooManyFieldsSent

如果SuspiciousOperation异常达到ASGI/WSGI处理程序级别,则将其记录在错误级别,并导致HttpResponseBadRequest异常。请参看日志文档查看更多信息。

7. PermissionDenied异常

定义:exception PermissionDenied。

说明:当用户没有执行所请求操作的权限时,将引发PermissionDenied异常。

8. ViewDoesNotExist异常

定义:exception ViewDoesNotExist。

说明:当请求的视图不存在时,django.urls路由会引发ViewDoesNotExist异常。

9. MiddlewareNotUsed异常

定义:exception MiddlewareNotUsed。

说明:当服务器配置中未使用到某个中间件时,将会引发MiddlewareNotUsed异常。

10. ImproperlyConfigured异常

定义:exception ImproperlyConfigured。

说明:当以某种方式对Django项目进行不正确的配置时,将会引发ImproperlyConfigured异常。例如,当settings.py配置中的一个值不正确或无法解析时,就会引发该异常。

11. FieldError异常

定义:exception FieldError。

说明:当模型字段存在问题时,将会引发FieldError异常。该异常会在以下情况被引发:

  • 模型中的字段与抽象基类中同名的字段发生冲突时。
  • 当无限循环是由顺序引起时。
  • 无法从过滤器参数中解析关键字时。
  • 无法通过查询参数中的关键字确定字段时。
  • 当指定字段上不允许加入时。
  • 当字段名称无效时。
  • 无法查询时。
  • 包含无效的“order_by”参数时。

12. ValidationError异常

定义:exception ValidationError。

说明:当数据无法通过表单或模型字段验证时,将会引发ValidationError异常。

13. RequestAborted异常(Django 3.0版本新增)

定义:exception RequestAborted。

说明:当处理程序正在读取HTTP正文的过程被中断并且客户端连接被关闭时,或者当客户端不发送数据并且服务器关闭连接超时时,将会引发RequestAborted异常。该异常通常出现在HTTP处理程序模块内部,不太可能在其他地方见到该异常。

14. SynchronousOnlyOperation异常(Django 3.0版本新增)

定义:exception SynchronousOnlyOperation

说明:当从异步上下文(具有运行中的异步事件循环的线程)中调用仅在同步Python代码中允许的代码时,将会引发SynchronousOnlyOperation异常。Django框架异常通常严重依赖于线程安全性才能正常运行,并且在共享同一线程的协程下无法正常工作。如果试图从异步线程中调用仅同步代码,则需要创建一个同步线程并在其中调用它,可以使用asgiref.sync.sync_to_async()方法完成此操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值