【Django】静态文件详解

3 篇文章 0 订阅
1 篇文章 0 订阅


注:本人使用的Django2.2版本,以下内容对其他版本可能不适用。

1. 静态文件相关配置

文件配置:MyProject/MyProject/settings.py
注:这里的MyProject是指你创建项目名称(django-admin startproject MyProject)

DEBUG = True
# 是否开启调试模式,默认为True,表示开启调试模式,当访问出错时网页上可以显示详细的错误信息。
# 这个配置也会影响到静态文件的读取。

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 这个是你项目的根目录
# __file__指的是settings.py这个文件本身
# os.path.abspath(__file__) 获取setting文件的绝对路径
# os.path.dirname(os.path.abspath(__file__)) 获取setting文件的目录名
# os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 就是获取 setting的上层目录,也就是你项目的根目录
# 关于os.path的相关方法可参考 https://blog.csdn.net/PeakMoment/article/details/105540339


STATIC_URL = '/static/' 
# 这个配置是你静态文件的路径,对应的是你的App下的static目录。例如 MyProject/MyApp/static/
# 假如配置改成STATIC_URL = '/staticfiles/'  那么你应该在你的APP下新建
# staticfiles目录,即MyProject/MyApp/staticfiles/,这样才能读取到静态文件。但是一般不建议改。

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "common_static"),
)
# 这个配置默认是没有的,但是假如你需要可以加上去。
# os.path.join(BASE_DIR, "common_static") 这个意思是把项目的根目录和
# common_static拼接,返回一个新路径。BASE_DIR上面已经解释过,例如
# BASE_DIR="/root/MyProject/" 那么 os.path.join(BASE_DIR, "common_static") 就等于 "/root/MyProject/common_static/"
# 这个配置的作用是添加额外的静态文件目录,通常我们用于存储多个APP共用的静态文件
# 这个配置是一个元祖,可以添加多个目录

STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
# 这个配置也是一个目录,生产环境为了安全起见,会把DEBUG设置为False,
# 这时模板不会直接去STATIC_URL、STATICFILES_DIRS这两个配置中的目录读取配置文件,而是需要到这个配置读取。代码发布到生产环境后,运行 python manage.py collectstatic 命令,
# 会把 STATIC_URL 和 STATICFILES_DIRS这两个配置中的静态文件,以及Django自带的admin相关的静态文件全部拷贝到该目录下。
# 该目录要保证有足够的权限,一般设置为755就够了。

# 注意: STATIC_URL、STATICFILES_DIRS、STATIC_ROOT这三个配置中的目录均需要自己手动创建。

2. 模板中引用静态文件

在模板文件顶部先引入static模块 {% load static %}
<link href="{% static 'css/abc.css' %}" rel="stylesheet">
<script src="{% static 'js/def.js' %}" type="text/javascript"></script>

当配置 DEBUG = True时,也就是处于开发模式时:
这里优先调用的就是
MyProject/MyApp/static/css/abc.css
MyProject/MyApp/static/js/def.js

假如在MyProject/MyApp/static/这个目录没有找到css/abc.css,那么会继续去STATICFILES_DIRS这个配置中的目录寻找。

当配置 DEBUG = False时,也就是处于生产模式时:
这里调用的就是
STATIC_ROOT/css/abc.css
STATIC_ROOT/js/def.js
所以当我们静态文件有改动时,记得运行一下python manage.py collectstatic拷贝到STATIC_ROOT目录下,不然生产环境是读取不到的。

更多精彩 http://www.17hf.online/blog/article/2/8

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值