django模板加载静态文件的方法步骤


Posted in Python onMarch 01, 2019

加载静态文件

在一个网页中,不仅仅只有一个 html 骨架,还需要 css 样式文件, js 执行文件以及一些图片等。因此在 DTL 中加载静态文件是一个必须要解决的问题。在 DTL 中,使用 static 标签来加载静态文件。要使用 static 标签,首先需要 {% load static %} 。加载静态文件的步骤如下:

首先确保 django.contrib.staticfiles 已经添加到 settings.INSTALLED_APPS 中。

确保在 settings.py 中设置了 STATIC_URL 。

在已经安装了的 app 下创建一个文件夹叫做 static ,然后再在这个 static 文件夹下创建一个当前 app 的名字的文件夹,再把静态文件放到这个文件夹下。例如你的 app 叫做 book ,有一个静态文件叫做 zhiliao.jpg ,那么路径为 book/static/book/zhiliao.jpg 。(为什么在 app 下创建一个 static 文件夹,还需要在这个 static 下创建一个同 app 名字的文件夹呢?原因是如果直接把静态文件放在 static 文件夹下,那么在模版加载静态文件的时候就是使用 zhiliao.jpg ,如果在多个 app 之间有同名的静态文件,这时候可能就会产生混淆。而在 static 文件夹下加了一个同名 app 文件夹,在模版中加载的时候就是使用 app/zhiliao.jpg ,这样就可以避免产生混淆。)

如果有一些静态文件是不和任何 app 挂钩的。那么可以在 settings.py 中添加 STATICFILES_DIRS ,以后 DTL 就会在这个列表的路径中查找静态文件。比如可以设置为:

STATICFILES_DIRS = [
   os.path.join(BASE_DIR,"static")
 ]

在模版中使用 load 标签加载 static 标签。比如要加载在项目的 static 文件夹下的 style.css 的文件。那么示例代码如下:

{% load static %}
   <link rel="stylesheet" href="{% static 'style.css' %}" rel="external nofollow" >

如果不想每次在模版中加载静态文件都使用 load 加载 static 标签,那么可以在 settings.py 中的 TEMPLATES/OPTIONS 添加 'builtins':['django.templatetags.static'] ,这样以后在模版中就可以直接使用 static 标签,而不用手动的 load 了。

如果没有在 settings.INSTALLED_APPS 中添加 django.contrib.staticfiles 。那么我们就需要手动的将请求静态文件的 url 与静态文件的路径进行映射了。示例代码如下:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
  # 其他的url映射
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python多线程http下载实现示例
Dec 30 Python
Python列表生成器的循环技巧分享
Mar 06 Python
Python实现控制台输入密码的方法
May 29 Python
Python导入模块时遇到的错误分析
Aug 30 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
Sep 11 Python
python实时监控cpu小工具
Jun 21 Python
python如何将多个PDF进行合并
Aug 13 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
Python字典中的值为列表或字典的构造实例
Dec 16 Python
Python GUI自动化实现绕过验证码登录
Jan 10 Python
Python新手如何理解循环加载模块
May 29 Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 #Python
Python multiprocessing多进程原理与应用示例
Feb 28 #Python
Python中的异常处理try/except/finally/raise用法分析
Feb 28 #Python
python使用phoenixdb操作hbase的方法示例
Feb 28 #Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
Feb 28 #Python
Python类的继承、多态及获取对象信息操作详解
Feb 28 #Python
django模板结构优化的方法
Feb 28 #Python
You might like
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
python解析xml模块封装代码
2014/02/07 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
python如何实现数据的线性拟合
2019/07/19 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
计算机系本科生求职信
2014/05/31 职场文书
弄虚作假心得体会
2014/09/10 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
政风行风建设整改方案
2014/10/27 职场文书
房租涨价通知
2015/04/23 职场文书
中学教代会开幕词
2016/03/04 职场文书