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网络编程学习笔记(10):webpy框架
Jun 09 Python
图文详解WinPE下安装Python
May 17 Python
pandas 透视表中文字段排序方法
Nov 16 Python
python异常触发及自定义异常类解析
Aug 06 Python
如何通过Django使用本地css/js文件
Jan 20 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
keras输出预测值和真实值方式
Jun 27 Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 Python
python调用摄像头的示例代码
Sep 28 Python
Python中Permission denied的解决方案
Apr 02 Python
Python实现byte转integer
Jun 03 Python
Python anaconda安装库命令详解
Oct 16 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 array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
vue实现计步器功能
2019/11/01 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
python实现自动重启本程序的方法
2015/07/09 Python
python黑魔法之编码转换
2016/01/25 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
python实现中文文本分句的例子
2019/07/15 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
python自动化发送邮件实例讲解
2021/01/04 Python
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
Linux的主要特性
2016/09/03 面试题
小学领导班子对照材料
2014/08/23 职场文书
六一儿童节开幕词
2015/01/29 职场文书
工程进度款催款函
2015/06/24 职场文书
中学教师教学工作总结
2015/08/13 职场文书
MySQL基于索引的压力测试的实现
2021/11/07 MySQL
MySQL新手入门进阶语句汇总
2022/09/23 MySQL