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判断、获取一张图片主色调的2个实例
Apr 10 Python
python继承和抽象类的实现方法
Jan 14 Python
Windows8下安装Python的BeautifulSoup
Jan 22 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
Jun 23 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
python实现智能语音天气预报
Dec 02 Python
python wxpython 实现界面跳转功能
Dec 17 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
Feb 11 Python
python属于软件吗
Jun 18 Python
Python Matplotlib绘制动画的代码详解
May 30 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
国外十大最流行的PHP框架排名
2013/07/04 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
php生成图片验证码的方法
2016/04/15 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
php curl常用的5个经典例子
2017/01/20 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
PHP简单实现防止SQL注入的方法
2018/03/13 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
js静态方法与实例方法分析
2011/07/04 Javascript
js单词形式的运算符
2014/05/06 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
Python探索之Metaclass初步了解
2017/10/28 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
详解Python3定时器任务代码
2019/09/23 Python
详解如何用python实现一个简单下载器的服务端和客户端
2019/10/28 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
离婚协议书样本
2015/01/26 职场文书
被告答辩状范文
2015/05/22 职场文书
辞职离别感言
2015/08/04 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
python Polars库的使用简介
2021/04/21 Python
如何利用pygame实现打飞机小游戏
2021/05/30 Python
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
简单聊聊Golang中defer预计算参数
2022/03/25 Golang
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android