关联之前的文章《Django生产环境下静态资源无法访问的问题》
这次的更新,主要是因为,Django项目很久没碰了,昨天新增了一个app,功能完成后,调整settings.py
中的DEBUG=False
,发现DEBUG
不同,资源访问会有问题。
我期望的是,不论DEBUG
怎么设置,程序自动判断,不要影响资源方面的设置(也就是上面那篇文章提到的设置)。
同时简化了之前的设置(不知道之前怎么想的,瞎折腾😂)
之前设置的时候,默认资源目录是
static
,
当时我理解不够,自己加了目录叫static_root
(里面是bootstrap
之类的公用资源)
现在发现,其实都可以放在static
里,也方便设置
新的设置
settings.py
DEBUG = False
...
STATIC_URL = 'static/' # 访问静态文件的URL前缀
STATICFILES_DIRS = ( # 存放查找静态文件的目录
# os.path.join(BASE_DIR, 'static'), -- 这一行注释掉,因为需要根据`DEBUG`值的情况来决定要不要加上❗
os.path.join(BASE_DIR, 'ddkq/static'), # app自己的static目录
os.path.join(BASE_DIR, 'fund/static'),
)
if DEBUG:
# 测试模式下,`static`目录放入`STATICFILES_DIRS`❗
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) + STATICFILES_DIRS
else:
# 生产模式下,`static`目录不能放进去,并且要设置`STATIC_ROOT`❗
STATIC_ROOT = 'static' # 生产环境下的static目录
我看有的文章,路径写的是
/static/
,前后加了斜杠,
我试了,不行。。。上面代码是我实际测试可行的。。。供参考
urls.py
跟上一篇文章说的方式一致,保持不变
关键代码如下:
urlpatterns = [
...
re_path(r"^static/(?P<path>.*)$", serve, {"document_root": settings.STATIC_ROOT}, name='static'), # 这行是关键❗
]
结束
这次修改,主要是针对我自己的项目
-
DEBUG
不论怎么设置,不需要我手动调整资源配置(包括代码和实际目录) - 去掉我擅自添加的
static_root
目录,结构和思路都清晰