django静态文件加载的方法


Posted in Python onMay 20, 2018

在模板中往往要加载静态文件,如CSS, JavaScript,图片等。那么这些文件在django中如何才能正确加载呢?

首先要在settings文件中进行设置,关于静态文件的设置选项主要由以下几项:

1. STATIC_URL = '/static/'

指定静态文件查找的url。这样设置后一般来说我们只要把静态文件放在 APP 中的 static 目录下就可以,但是有时我们有一些共用的静态文件,这时候可以设置 STATICFILES_DIRS 另外弄一个文件夹。

2.STATIC_ROOT =os.path.join(BASE_DIR, 'collected_static')

当运行 python manage.py collectstatic 的时STATIC_ROOT 文件夹是用来复制所有STATICFILES_DIRS文件夹中的文件,以及各app中static中的文件。把这些文件放到一起是为了用apache等部署的时候更方便。

3.      

STATICFILES_DIRS = (
  ("images",os.path.join(STATIC_URL, 'images').replace('\\', '/')),
  ("css",  os.path.join(STATIC_URL, 'css').replace('\\', '/')),
  ("js",  os.path.join(STATIC_URL, 'js').replace('\\', '/')),
)

其它存放静态文件的文件夹,可以用来存放项目中公用的静态文件,里面不能包含 STATIC_ROOT如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以。

 4.     

STATICFILES_FINDERS = (
  "django.contrib.staticfiles.finders.FileSystemFinder",
  "django.contrib.staticfiles.finders.AppDirectoriesFinder"

)

默认设置,相当于搜索引擎,Django 默认会在 STATICFILES_DIRS中的文件夹和 各app下的static文件夹中找文件。注意有先后顺序,找到了就不再继续找了。

 那如何在模版中使用这些静态文件呢?可以参考如下代码,其中语句{% load static from staticfiles %}在这个模版文件中只需要出现一次。

{% load static from staticfiles %}

<link href="{% static" rel="external nofollow" css/sample.css" %}" rel="stylesheet">

用下边的方法也可

{% load static from staticfiles %}
{% static "css/sample.css" assample %}
<link href="{{ sample }}" rel="external nofollow" rel="stylesheet">

Django在运行时会自动将这些文件映射到STATIC_URL所给定的值下。也就是如,如果STATIC_URL = '/static/',那么在运行时,上边模版中的样例中的url会被替换为/static/css/sample.css。

这里做两点说明:

1.其实将静态文件路径硬编码在模版中也可以正常运行,如使用href="/static/css/sample.css" rel="external nofollow" ,前提是配置好了STATIC_URL和STATIC_DIRS。但并不推荐这么做,因为如果后来静态资源的位置发生了迁移,如使用独立服务器或者使用CDN,就要修改一大堆URL。而使用推荐的方法可以避免这个庞大的工作量,最多只需要修改STATIC_URL即可。

2.如果css文件中也使用了静态文件如css背景,则按照相对路径使用即可,因为浏览器解析css是会自动按照相对路径寻找到正确的URL。

在这里还需要强调的是,在开发阶段,Django使用的是内建的一个静态文件服务器,虽然在生产环境中也可以使用,但是它既不稳定也不安全。更好的方式是使用提供web服务的服务器如apache来服务静态文件。这需要你首先上传代码到服务器,然后运行collectstatic命令:python manage.py collectstatic 然后配置web服务器来为静态文件服务,如对Apache2进行配置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现dnspod自动更新dns解析的方法
Feb 14 Python
Python中字典和JSON互转操作实例
Jan 19 Python
浅谈Python中的闭包
Jul 08 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
python使用标准库根据进程名如何获取进程的pid详解
Oct 31 Python
Python实现Dijkstra算法
Oct 17 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
Jul 04 Python
解决django服务器重启端口被占用的问题
Jul 26 Python
利用python实现周期财务统计可视化
Aug 25 Python
Python的in,is和id函数代码实例
Apr 18 Python
详解Python IO口多路复用
Jun 17 Python
django中静态文件配置static的方法
May 20 #Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
May 19 #Python
Python利用公共键如何对字典列表进行排序详解
May 19 #Python
Python中一些不为人知的基础技巧总结
May 19 #Python
Python + selenium自动化环境搭建的完整步骤
May 19 #Python
pandas中去除指定字符的实例
May 18 #Python
pandas数据清洗,排序,索引设置,数据选取方法
May 18 #Python
You might like
终于听上了直流胆调频
2021/03/02 无线电
PHP.MVC的模板标签系统(四)
2006/09/05 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
php简单防盗链实现方法
2015/07/29 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
Python带动态参数功能的sqlite工具类
2018/05/26 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
通信生自我鉴定
2014/01/18 职场文书
报关专员求职信范文
2014/02/22 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
教师工作决心书
2015/02/04 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
Selenium浏览器自动化如何上传文件
2022/04/06 Python
nginx搭建NFS网络文件系统
2022/04/14 Servers