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 相关文章推荐
django从请求到响应的过程深入讲解
Aug 01 Python
Python Matplotlib库安装与基本作图示例
Jan 09 Python
Python匿名函数及应用示例
Apr 09 Python
利用python和百度地图API实现数据地图标注的方法
May 13 Python
python 默认参数相关知识详解
Sep 18 Python
实现Python与STM32通信方式
Dec 18 Python
Java Spring项目国际化(i18n)详细方法与实例
Mar 20 Python
django修改models重建数据库的操作
Mar 31 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
Jun 08 Python
Python 基于jwt实现认证机制流程解析
Jun 22 Python
django跳转页面传参的实现
Sep 17 Python
python 还原梯度下降算法实现一维线性回归
Oct 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将整数数字转换为罗马数字实例分享
2019/03/17 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
JS数组操作中的经典算法实例讲解
2017/07/26 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
iview table高度动态设置方法
2018/03/14 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
Python入门_条件控制(详解)
2017/05/16 Python
Python实现批量压缩图片
2018/01/25 Python
Django视图和URL配置详解
2018/01/31 Python
对python append 与浅拷贝的实例讲解
2018/05/04 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
Python对象转换为json的方法步骤
2019/04/25 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
python statsmodel的使用
2020/12/21 Python
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
机修工工作职责
2014/02/21 职场文书
公司晚会策划方案
2014/05/17 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
初中成绩单评语
2014/12/29 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL