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编写一个基于终端的实现翻译的脚本
Apr 24 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
Nov 19 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 Python
Python画图高斯分布的示例
Jul 10 Python
Python 依赖库太多了该如何管理
Nov 08 Python
python代码如何实现余弦相似性计算
Feb 09 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
Apr 22 Python
自学python用什么系统好
Jun 23 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 Python
python批量修改交换机密码的示例
Sep 22 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 中文和编码判断代码
2010/05/16 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
javascript 高级语法之继承的基本使用方法示例
2019/11/11 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
Python基于有道实现英汉字典功能
2015/07/25 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
python 实现让字典的value 成为列表
2019/12/16 Python
python如何求100以内的素数
2020/05/27 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
求职简历自荐信
2013/10/20 职场文书
日语专业推荐信
2013/11/12 职场文书
运动会解说词100字
2014/01/31 职场文书
水利学院求职自荐书
2014/02/01 职场文书
医药销售自我评价200字
2014/09/11 职场文书
教师岗位说明书
2015/09/30 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL