【图书介绍】《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()方法完成此操作。