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的socket编程入门教程
Apr 23 Python
浅析Python中的赋值和深浅拷贝
Aug 15 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 Python
Python中遍历列表的方法总结
Jun 27 Python
pytorch 输出中间层特征的实例
Aug 17 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
使用OpenCV去除面积较小的连通域
Jul 05 Python
Python3爬虫RedisDump的安装步骤
Feb 20 Python
解决pytorch 模型复制的一些问题
Mar 03 Python
Python Django获取URL中的数据详解
Nov 01 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
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
jquery键盘事件使用介绍
2011/11/01 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
javascript实现的左右无缝滚动效果
2016/09/19 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
vue组件name的作用小结
2018/05/23 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
Django安装配置mysql的方法步骤
2018/10/15 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
python实现图片中文字分割效果
2019/07/22 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
Python实现京东抢秒杀功能
2021/01/25 Python
酒店前台接待岗位职责
2013/12/03 职场文书
物业保安员岗位职责
2014/03/14 职场文书
投资建议书模板
2014/05/12 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
律师授权委托书范本
2014/10/07 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python