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中的yield函数的用法
Apr 03 Python
Python之Scrapy爬虫框架安装及简单使用详解
Dec 22 Python
PyQt5每天必学之拖放事件
Aug 27 Python
python中字符串内置函数的用法总结
Sep 13 Python
Python 确定多项式拟合/回归的阶数实例
Dec 29 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
Python实现FM算法解析
Jun 18 Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 Python
40个你可能不知道的Python技巧附代码
Jan 29 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
python 基于opencv 绘制图像轮廓
Dec 11 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将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
微博短链接算法php版本实现代码
2012/09/15 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
用js遍历 table的脚本
2008/07/23 Javascript
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
广告切换效果(缓动切换)
2009/05/27 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
傻瓜式vuex语法糖kiss-vuex整理
2018/12/21 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
python正则表达式中的括号匹配问题
2014/12/14 Python
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
python 日期排序的实例代码
2019/07/11 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
python实现简单猜单词游戏
2020/12/24 Python
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
如何写毕业求职自荐信
2013/11/06 职场文书
个人股份合作协议书
2014/10/24 职场文书
《火烧云》教学反思
2016/02/23 职场文书