网络编程
位置:首页>> 网络编程>> Python编程>> Django项目中动态设置静态文件路径的全过程

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

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

标签:django,静态文件,路径

前言

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

0
投稿

猜你喜欢

  • 1. 多线程的作用简而言之,多线程是并行处理相互独立的子任务,从而大幅度提高整个任务的效率。2. Python中的多线程相关模块和方法Pyt
  • 一、责任链模式责任链模式,将多个处理方法连接成一条链条,请求将在这条链条上流动直到该链条中有一个节点可以处理该请求。通常这条链条是一个对象包
  • 众所周知,凡是用 FrontPage 做的网页里面都有类似这样的标记:<META content="Microso
  • 与前面一样我们会用fso来对文件或文件夹进行创建与删除操作了,其实fso有强大的功能但非常危险的哦,下面我们不来看看删除实例吧,在这些例子,
  • 无论是 DAO 还是 ADO 都有两种从 Recordset 对象中查询记录的方法: Find 方法和 Seek 方法。在这两种方法中可以让
  • 本文实例讲述了Go语言算法之寻找数组第二大元素的方法。分享给大家供大家参考。具体如下:该算法的原理是,在遍历数组的时,始终记录当前最大的元素
  • 前言在我们使用线程池控制线程运行时,或者是写爬虫时不停发送request获取地址,都需要我们对运行的线程加以控制。有这样一种场景,当你写入一
  • 导语轻松瘦 | 和闺蜜减肥的日常,谁说闺蜜是减肥路上的一座山?哈喽!大家好!我是木木子吖~小编有一个闺蜜,还是同一所学校读书毕业的,这体重在
  • 在团队意见PK中,运用对方的知识背景说服对方,这就是技术性击倒。这样通常能把对方驳得哑口无言,我经常被这样击倒,甚至觉得怎么那么多牛逼的设计
  • 1. 背景在使用selenium浏览器渲染技术,爬取网站信息时,默认情况下就是一个普通的纯净的chrome浏览器,而我们平时在使用浏览器时,
  • 这篇文章主要介绍了如何使用Python抓取网页tag操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
  • 在/etc/profile.d/简历oracle.sh内容如下在NLS_LANG设置编码ORACLE_HOME=/usr/lib/oracl
  • 约定:import pandas as pdimport numpy as npfrom numpy import nan as NaN填充
  • 对于regex库的使用不难,因为本身就是python中自带的库,所以在调用上也是常见的库使用类型,大部分时候都是用于搜索上下文信息的,但是有
  • 知识点图像模块 (Image.Image)Image模块的功能Image模块的方法ImageChops模块ImageColor模块基础使用图
  • 在应用中,有时候会 依赖第三方模块执行方法,比如调用某模块的上传下载,数据库查询等操作的时候,如果出现网络问题或其他问题,可能有超时重新请求
  • 引言你在写代码的过程中,有没有遇到过以下问题?已经写好的程序,想看看程序执行的进度?在写代码批量处理文件的时候,如何显示现在处理到第几个文件
  • Monster是Alipay UED推出的网站代码分析、质量检测及评分的浏览器扩展,它能智能分析CSS、JS、HTML内容并生动形象展示网页
  • 本文实例讲述了Python使用multiprocessing创建进程的方法。分享给大家供大家参考。具体分析如下:进程可以通过调用multip
  • 什么是事件代理(Event Delegation)?如果不太了解的朋友,可详细阅读:《Event delegation in JavaScr
手机版 网络编程 asp之家 www.aspxhome.com