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中dictionary items()系列函数的用法实例
Aug 21 Python
用Python从零实现贝叶斯分类器的机器学习的教程
Mar 31 Python
Python实现给文件添加内容及得到文件信息的方法
May 28 Python
使用Python来编写HTTP服务器的超级指南
Feb 18 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
简单谈谈python的反射机制
Jun 28 Python
python类的方法属性与方法属性的动态绑定代码详解
Dec 27 Python
transform python环境快速配置方法
Sep 27 Python
Django后台admin的使用详解
Jul 08 Python
python数据预处理 :数据抽样解析
Feb 24 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
利用Python中的Xpath实现一个在线汇率转换器
Sep 09 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
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
jquery prop的使用介绍及与attr的区别
2013/12/19 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
vue实现与安卓、IOS交互的方法
2018/11/02 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
python 绘制正态曲线的示例
2020/09/24 Python
五种Python转义表示法
2020/11/27 Python
Html5定位终极解决方案
2020/02/05 HTML / CSS
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
2014春晚主持词
2014/03/25 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
高中家长意见怎么写
2015/06/03 职场文书
昆虫记读书笔记
2015/06/26 职场文书
Python爬取某拍短视频
2021/06/11 Python
Python数组变形的几种实现方法
2022/05/30 Python