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 相关文章推荐
Windows8下安装Python的BeautifulSoup
Jan 22 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
Flask数据库迁移简单介绍
Oct 24 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
python smtplib模块自动收发邮件功能(二)
May 22 Python
Python实现聊天机器人的示例代码
Jul 09 Python
Python实现的ftp服务器功能详解【附源码下载】
Jun 26 Python
Django模板语言 Tags使用详解
Sep 09 Python
Django集成celery发送异步邮件实例
Dec 17 Python
python实现根据给定坐标点生成多边形mask的例子
Feb 18 Python
Python实现获取当前目录下文件名代码详解
Mar 10 Python
Python 在局部变量域中执行代码
Aug 07 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中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
python实现简单加密解密机制
2019/03/19 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
大学毕业自我评价
2014/02/02 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
《学会合作》教学反思
2014/04/12 职场文书
房屋出租委托书格式
2014/09/23 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
源码安装apache脚本部署过程详解
2022/09/23 Servers