Django生产环境下设置资源路径

关联之前的文章《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'), # 这行是关键❗
]

结束

这次修改,主要是针对我自己的项目

  1. DEBUG不论怎么设置,不需要我手动调整资源配置(包括代码和实际目录)
  2. 去掉我擅自添加的static_root目录,结构和思路都清晰
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容