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 socket C/S结构的聊天室应用实现
Nov 30 Python
python使用urllib2实现发送带cookie的请求
Apr 28 Python
win7 x64系统中安装Scrapy的方法
Nov 18 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
Python面向对象程序设计示例小结
Jan 30 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
用Python进行websocket接口测试
Oct 16 Python
Python Django ORM连表正反操作技巧
Jun 13 Python
Python并发编程实例教程之线程的玩法
Jun 20 Python
django 认证类配置实现
Nov 11 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
php intval的测试代码发现问题
2008/07/27 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
python3爬虫之设计签名小程序
2018/06/19 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
python从PDF中提取数据的示例
2020/10/30 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
美国购买隐形眼镜网站:Lenses For Less
2020/07/05 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
大二自我鉴定范文
2013/10/05 职场文书
四年级数学教学反思
2014/02/02 职场文书
有关爱国演讲稿
2014/05/07 职场文书
启动仪式策划方案
2014/06/14 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS