Django项目中动态设置静态文件路径的全过程

作者:动态设置路径 时间:2021-07-12 00:52:24 

前言

Django项目需要在settings.py文件中设置各种文件的路径,例如:媒体文件(media)的路径、静态文件(static files)的路径、模板文件(templetes)的路径。然而对于每一个开发者而言,python虚拟环境是可以存放在任何位置的,所以每一个开发者文件的绝对路径也不完全相同。为了避免不同的运行环境下文件位置不同造成的异常情况,可以通过动态设置路径的方法来解决这个问题。

根据项目修改路径相关设置,而不是将文件路径硬编码到文件中,修改base.py文件,示例如下:

一、修改BASE_DIR:

修改前:

BASE_DIR = Path(__file__).resolve().parent.parent

修改后的内容

BASE_DIR = Path(__file__).resolve().parent.parent.parent

二、修改模板文件路径(TEMPLATES中的DIRS的值):

Django项目中动态设置静态文件路径的全过程

修改模板路径前代码示例

Django项目中动态设置静态文件路径的全过程

修改模板路径代码后示例

注:由于base.py文件中默认是没有导入os模块,需要在base.py文件开头进行模块导入,如下所示:

Django项目中动态设置静态文件路径的全过程

导入os模块示例

三、修改国际化文件路径,由于LOCALE_PATHS默认不存在,需要自己在合适位置添加,如下图所示:

Django项目中动态设置静态文件路径的全过程

国际化文件路径代码示例

四、修改公共文件路径,如下图所示:

Django项目中动态设置静态文件路径的全过程

修改公共静态文件路径后的代码示例

注:STATICFILES_DIRS是一个公共的文件夹, 因为有些静态文件不是某个app独有的,那么就可以把它放到一个公共文件夹里面,方便管理。注意,建立一个公共的静态文件的文件夹只是一种易于管理的做法,但是不是必须的,app是可以跨app应用静态文件的,因为最后所有的静态文件都会在STATIC_ROOT里面存在。因为一个项目可能包含多个app,所以可以在STATICFILES_DIRS中可以创建site文件夹(具体可以根据app名称命名),将每个app的静态文件分离,相当于命名空间一样的作用(具体结构可参考Django项目搭建以及相应目录介绍)。

五、修改STATIC_ROOT文件路径,如下图所示:

Django项目中动态设置静态文件路径的全过程

修改STATIC_ROOT后代码示例

注:部署django项目的时候需要用到STATIC_ROOT ,它是收集所有的静态文件,执行完python manage.py collectstatic后,将静态文件复制到STATIC_ROOT指定的目录中。

六、修改多媒体路径,如下图所示:

Django项目中动态设置静态文件路径的全过程

修改多媒体路径后的代码示例

补充:STATIC_URL指出浏览器访问静态资源的“根路径”,即该路径为显示在浏览器地址栏中的值,其本质就是利用STATIC_URL的具体内容,来映射STATIC_ROOT。因为用户在浏览的时候不可能输入服务器本地地址对静态资源进行访问,而是需要通过url的形式访问。

来源:https://developer.51cto.com/article/700805.html

标签:django,静态文件,路径
0
投稿

猜你喜欢

  • 详解Python解决抓取内容乱码问题(decode和encode解码)

    2021-12-18 09:26:29
  • vue后台返回base64图片无法显示的解决

    2024-05-09 15:21:11
  • 将以用户为中心的设计嵌入产品设计和开发流程

    2009-08-11 14:27:00
  • 如何远程使用服务器上的Jupyter notebook

    2023-02-08 10:45:54
  • SQLServer查询某个时间段购买过商品的所有用户

    2024-01-17 20:02:10
  • python 如何把classification_report输出到csv文件

    2023-01-31 21:02:02
  • Python对列表的操作知识点详解

    2022-05-08 09:06:39
  • Python集成学习之Blending算法详解

    2022-09-28 04:31:35
  • Python深度学习pytorch神经网络多层感知机简洁实现

    2021-08-20 17:37:43
  • Flask  请求钩子的实现

    2022-04-25 21:21:12
  • FckEditor配置手册中文教程详细说明

    2010-02-28 12:37:00
  • Python实现鼠标自动在屏幕上随机移动功能

    2022-01-30 05:08:15
  • python用plotly实现绘制局部放大图

    2021-06-13 06:30:44
  • SQL语句实现删除重复记录并只保留一条

    2024-01-13 21:19:23
  • 完美解决pycharm导入自己写的py文件爆红问题

    2023-01-22 10:16:48
  • python实现图像外边界跟踪操作

    2021-07-20 17:38:33
  • Python yield 小结和实例

    2023-07-21 15:37:39
  • Oracle 创建用户及数据表的方法

    2009-09-26 18:25:00
  • 用python实现的线程池实例代码

    2023-11-06 23:04:54
  • FrontPage XP设计教程3——网页的布局

    2008-10-11 12:20:00
  • asp之家 网络编程 m.aspxhome.com