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抓取网页中的图片示例
Feb 28 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
解决PySide+Python子线程更新UI线程的问题
Jan 11 Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 Python
python数据归一化及三种方法详解
Aug 06 Python
解决python gdal投影坐标系转换的问题
Jan 17 Python
python连接mongodb集群方法详解
Feb 13 Python
python实现画图工具
Aug 27 Python
Python 实现微信自动回复的方法
Sep 11 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
python 30行代码实现蚂蚁森林自动偷能量
Feb 08 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漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
Prototype Array对象 学习
2009/07/19 Javascript
jquery ready函数源代码研究
2009/12/06 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
js实现微信聊天界面
2020/08/09 Javascript
vue实现选中效果
2020/10/07 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
Python对象转JSON字符串的方法
2016/04/27 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
python异步存储数据详解
2019/03/19 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
基于keras中的回调函数用法说明
2020/06/17 Python
容易被忽略的Python内置类型
2020/09/03 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
自行车租赁公司创业计划书
2014/01/28 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
大学军训感言1000字
2014/02/25 职场文书
婚前协议书怎么写
2014/04/15 职场文书
《司马光》教学反思
2016/02/22 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书