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

作者: , 共 635 字 , 共阅读 0

在 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.

类似文章:
编程 » django, requests, python
这里的 requests 是指 Python 的 requests 包。
编程 » django, html, http, axios
我们用访问网页动态数据时,经常会提交一些参数,比如用axios.get
编程 » python, requests, django
在 Python 里,我们可以用request.post提交json数据:
编程 » Python
在 Python 中,有时候为了获取当前运行的脚本的同目录下的另外一个文件,会这么写:
前面文章已提到,阅微堂搬迁到了阿里云。受预算的限制,服务器只有单核的 CPU ,内存只有 1G ,同时又安装的是 windows 系统,导致服务器性能极低下。网络带宽也只有 1M (即最大理论下载速度只有 128k/s ),访问速度受到极大的影响。不得已,采取若干中方法降低服务器性能和带宽压力,提升页面访问和显示速度。
编程 » C++, 编译
一个典型的 GCC C++编译过程为:
相似度: 0.056
编程 » C++, GCC, 编译链接
C++的链接分为两部分,一个是编译时,一个是运行时。但运行时的行为也收到编译参数的影响。
主要形式是下面三种。后面两种实际指向同一个位置(如果path是一个已存在的文件夹),但处理结果会有所差异。
IT » nginx
在 nginx 里设置了一个转发:
路网效果图:
barra 提供的数据里存在重复。比如 600030.SH ,我们可以看到它有两个 barra 的 ID ,分别为 CHNCCR1 和 CHNCCR2。