3

如何让 django 在生产环境部署中也处理静态文件

 1 year ago
source link: https://zhiqiang.org/it/django-serve-static-files-in-production.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如何让 django 在生产环境部署中也处理静态文件

作者: 张志强

, 2023-06-01

, 共 635 字 , 共阅读 13 次

在 django 的setting.py里可以设置 debug 和 production 模式:

DEBUG = True # 其中True代表debug模式,False表示为生产模式:
TEMPLATE_DEBUG = True

在 debug 模式下, django 会自己处理静态文件。但在生产模式,静态文件会被 django 过滤,需要另外配置 nginx 服务器来处理静态文件。

这个是符合绝大部分工作的实际情况,也符合实际管理。这其中的原因包括处理效率、减少网络堵塞等。

但我这边有特殊的需求,静态文件包括一些用户下载的文件,我们用 django 来控制不同用户的查看和下载权限,而用户信息在 django 里,所以我们必须让 django 来处理静态文件,即使在生产模式下。

一个最简单的方法就是直接在urls.py增加路由:

import django
from django.urls import re_path 

urlpatterns = [
    # ...
    re_path(r'^static/(?P<path>.*)$', django.views.static.serve, 
            {'document_root': "static/"}),  
]

这样生产环境下也会对静态文件做处理,而且经过权限控制的中间件,从而适用了权限控制。

Q. E. D.

avatar-0.jpg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK