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 14 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
Mar 19 Python
Django中几种重定向方法
Apr 28 Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 Python
python 实时遍历日志文件
Apr 12 Python
python魔法方法-属性访问控制详解
Jul 25 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
python中的字符串内部换行方法
Jul 19 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
python实现学员管理系统
Feb 26 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 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一段代码轻松搞定(全面版)
2018/10/23 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
package.json文件配置详解
2017/06/15 Javascript
详解a++和++a的区别
2017/08/30 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
python实现简单的计时器功能函数
2015/03/14 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
Python如何给函数库增加日志功能
2020/08/04 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
盛大笔试题
2016/11/05 面试题
三好学生自我鉴定
2013/12/17 职场文书
生产厂长岗位职责
2014/02/21 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript