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 相关文章推荐
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
Python下载网络小说实例代码
Feb 03 Python
详解python中的线程
Feb 10 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
python中的itertools的使用详解
Jan 13 Python
python模拟预测一下新型冠状病毒肺炎的数据
Feb 01 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
django模板获取list中指定索引的值方式
May 14 Python
Python析构函数__del__定义原理解析
Nov 20 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去除重复字的实现代码
2011/09/16 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
JS基础之undefined与null的区别分析
2011/08/08 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
vue组件之Alert的实现代码
2017/10/17 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
编写Python CGI脚本的教程
2015/06/29 Python
Python全局变量用法实例分析
2016/07/19 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
给护士表扬信
2014/01/19 职场文书
公司给客户的感谢信
2015/01/23 职场文书
MySQL数据库 安全管理
2022/05/06 MySQL