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中的标识运算符
May 14 Python
在Python中的Django框架中进行字符串翻译
Jul 27 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
python递归实现快速排序
Aug 18 Python
Tesserocr库的正确安装方式
Oct 19 Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 Python
python3安装crypto出错及解决方法
Jul 30 Python
python如何基于redis实现ip代理池
Jan 17 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
浅谈Python协程asyncio
Jun 20 Python
python数字图像处理:图像的绘制
Jun 28 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/02/21 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
js select常用操作控制代码
2010/03/16 Javascript
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
让 python 命令行也可以自动补全
2014/11/30 Python
Python OS模块常用函数说明
2015/05/23 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
Python: 传递列表副本方式
2019/12/19 Python
Python实现汇率转换操作
2020/05/03 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
经济贸易系毕业生求职信
2014/05/31 职场文书
消防安全标语
2014/06/07 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书