当前位置: 首页 > 科技观察

Django项目中动态设置静态文件路径

时间:2023-03-13 12:55:06 科技观察

Django项目需要在settings.py文件中设置各种文件的路径,如:媒体文件(media)的路径,静态文件(staticfiles)的路径,模板文件(templets))的路径。但是对于每个开发者来说,python虚拟环境可以存放在任意位置,所以每个开发者的文件的绝对路径并不完全相同。为了避免在不同的运行环境下文件位置不同导致的异常情况,可以通过动态设置路径的方式来解决这个问题。根据项目修改路径相关设置,不要将文件路径硬编码到文件中,而是修改base.py文件。示例如下:1.修改BASE_DIR:修改前:BASE_DIR=Path(__file__).resolve().parent.parent修改后的内容BASE_DIR=Path(__file__).resolve().parent.parent.parent2.修改模板文件路径(TEMPLATES中DIRS的值):修改模板路径前的代码示例修改模板路径代码后的示例注意:由于base默认情况下,.py文件中没有导入os模块,而需要在base.py文件开头导入模块,如下图:导入os模块示例3.修改国际化文件路径。由于LOCALE_PATHS默认不存在,需要在合适的位置添加,如下图:国际化文件路径代码示例4.修改公共文件路径,如下图:修改后的代码示例public静态文件路径注意:STATICFILES_DIRS是public文件夹,因为有些静态文件不是某个App独有的,那么可以放在public文件夹下,方便管理。请注意,创建公共静态文件夹只是一种易于管理的方法,但不是必需的。应用可以跨应用应用静态文件,因为最终所有的静态文件都会存在于STATIC_ROOT中。因为一个项目中可能包含多个app,可以在STATICFILES_DIRS中创建一个site文件夹(具体可以根据app名称命名),将各个app的静态文件分开,相当于一个命名空间的作用相同(具体结构请参考Django项目搭建及对应目录介绍)。5、修改STATIC_ROOT文件路径,如下图所示:修改STATIC_ROOT后的代码示例注意:部署django项目时需要STATIC_ROOT,它收集了所有的静态文件。执行pythonmanage.pycollectstatic后,将静态文件复制到STATIC_ROOT指定的目录下。6、修改多媒体路径,如下图所示:修改多媒体路径后的代码示例补充:STATIC_URL指出浏览器访问静态资源的“根路径”,即路径为显示在浏览器地址栏,其实质就是用STATIC_URL的具体内容映射STATIC_ROOT。因为用户浏览时不可能输入服务器的本地地址来访问静态资源,而是需要以url的形式访问。