Django 常流程 MIDDLEWARE STATIC TIME DEBUG

目录

Django MIDDLEWARE 三步走 process_request process_view process_response

Django STATIC_URL STATIC_ROOT STATICFILES_DIRS

Django TIME_ZONE USE_TZ

Django DEBUG


Django MIDDLEWARE 三步走 process_request process_view process_response

在Django的中间件处理流程中,process_requestprocess_view 和 process_response 的执行顺序如下:

  1. 当一个请求到达Django应用时,首先会调用所有中间件的 process_request 方法,按照中间件的定义顺序从上到下执行。

  2. 如果所有中间件的 process_request 方法都执行完毕且没有返回响应,请求会进入路由系统,匹配对应的视图函数。在调用视图函数之前,Django会按照中间件的定义顺序从上到下执行所有中间件的 process_view 方法。

  3. 视图函数处理请求,并返回一个响应对象(HttpResponse)。

  4. 响应对象会再次经过中间件的处理链,这时会按照中间件的定义顺序从下到上执行所有中间件的 process_response 方法。

总的来说,执行顺序是:

process_request(从上到下)-> process_view(从上到下)-> 视图函数 -> process_response(从下到上)。

需注意,如果某个中间件的 process_request 或 process_view 方法返回了响应对象,那么请求将不会继续传递,而是直接进入 process_response 阶段。


Django STATIC_URL STATIC_ROOT STATICFILES_DIRS

三个是专门用于配置静态文件处理的设置。

STATIC_URL 用于配置静态文件的URL前缀
STATIC_ROOT 用于配置静态文件的收集目录
STATICFILES_DIRS 用于配置额外的静态文件目录

STATIC_URL = '/static/'

那么在模板中使用 `{% static 'css/style.css' %}` 时,渲染出来的链接为 `/static/css/style.css`。

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

运行 `python manage.py collectstatic` 命令时,Django会将所有应用中的静态文件(以及 `STATICFILES_DIRS` 中指定的目录)复制到这个目录。在生产环境中,通常会配置Web服务器(如Nginx)直接从这个目录提供静态文件。

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'extra_static'),
]

除了应用中的 static 文件夹,还可以在这里添加其他包含额外的静态文件的目录。


Django TIME_ZONE USE_TZ

TIME_ZONE:这个设置用于指定Django应用的默认时区(默认值'UTC')。
USE_TZ
:这个设置用于指定是否启用时区支持(默认值True)。

为什么开发会注意他们呢,在非国际化项目中,也会为什么?因为会影响ORM操作与admin,经常能在大部分Django项目的settings里见到:

TIME_ZONE = 'Asia/Shanghai'  # 时区设置为中国上海(东八区)

如果设置USE_TZ=False,Django将使用本地时间(由 TIME_ZONE 指定)而不是UTC时间,若不设置TIME_ZONE则用OS的本地时间,进行ORM操作时,Django不会对时间进行任何转换。但如果需特定情况下用其他时区,用 Django 提供的时区相关函数(如 

timezone.localtime() 
timezone.make_aware()

)转换,就会使用TIME_ZONE。

如果USE_TZ=True,Django会将所有日期和时间相关的字段(如 DateTimeField 和 DateField存储为UTC时间。在进行ORM操作时,Django会自动将UTC时间转换为 TIME_ZONE 指定的时区。在模板和表单、admin中,也会自动进行时区转换。


Django DEBUG

DEBUG是一个配置选项,用于指示Django应用是否运行在调试模式

(1)当发生错误时,Django会显示一个详细的错误页面,包括错误信息、堆栈跟踪、本地变量等。这有助于开发人员快速定位和解决问题:

(2)调试模式下,Django会自动处理静态文件的访问,而无需额外配置Web服务器;

(3)性能优化关闭:为提高开发过程中的调试效率,Django关闭某些性能优化选项,如模板缓存

等等便于本地开发调测的功能。

注意,在生产环境中,您应该将DEBUG设置为False,以确保应用程序的安全性和性能。

为什么呢?

(1)详细的错误页面可能会泄露应用程序的内部实现细节,使攻击者更容易发现潜在安全漏洞。

(2)详细的错误页面可能会泄露敏感数据,例如数据库密码、API 密钥等。

(3)Django 关闭了一些性能优化选项,影响正常性能。

(4)调试模式下,Django 会自动处理静态文件的访问。然而,在生产环境中,静态文件应由专门的 Web 服务器(如 Nginx)处理,以提高性能和安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值