简单介绍Python的Django框架加载模版的方式


Posted in Python onJuly 20, 2015

一般说来,你会把模板以文件的方式存储在文件系统中,但是你也可以使用自定义的 template loaders 从其他来源加载模板。

Django有两种方法加载模板

  1.     django.template.loader.get_template(template_name) : get_template 根据给定的模板名称返回一个已编译的模板(一个 Template 对象)。 如果模板不存在,就触发 TemplateDoesNotExist 的异常。
  2.     django.template.loader.select_template(template_name_list) : select_template 很像 get_template ,不过它是以模板名称的列表作为参数的。 它会返回列表中存在的第一个模板。 如果模板都不存在,将会触发TemplateDoesNotExist异常。

默认情况下这些函数使用 TEMPLATE_DIRS 的设置来载入模板。 但是,在内部这些函数可以指定一个模板加载器来完成这些繁重的任务。

一些加载器默认被禁用,但是你可以通过编辑 TEMPLATE_LOADERS 设置来激活它们。 TEMPLATE_LOADERS 应当是一个字符串的元组,其中每个字符串都表示一个模板加载器。 这些模板加载器随Django一起发布。

    django.template.loaders.filesystem.load_template_source : 这个加载器根据 TEMPLATE_DIRS 的设置从文件系统加载模板。它默认是可用的。

    django.template.loaders.app_directories.load_template_source : 这个加 载器从文件系统上的Django应用中加载模板。 对 INSTALLED_APPS 中的每个应用,这个加载器会查找templates 子目录。 如果这个目录存在,Django就在那里寻找模板。

    这意味着你可以把模板和你的应用一起保存,从而使得Django应用更容易和默认模板一起发布。 例如,如果 INSTALLED_APPS 包含 ('myproject.polls','myproject.music') ,那么 get_template('foo.html') 会按这个顺序查找模板:

/path/to/myproject/polls/templates/foo.html

    /path/to/myproject/music/templates/foo.html

    请注意加载器在首次被导入的时候会执行一个优化: 它会缓存一个列表,这个列表包含了 INSTALLED_APPS 中带有 templates 子目录的包。

    这个加载器默认启用。

    django.template.loaders.eggs.load_template_source : 这个加载器类似 app_directories ,只不过它从Python eggs而不是文件系统中加载模板。 这个加载器默认被禁用;如果你使用eggs来发布你的应用,那么你就需要启用它。 Python eggs可以将Python代码压缩到一个文件中。

Django按照 TEMPLATE_LOADERS 设置中的顺序使用模板加载器。 它逐个使用每个加载器直至找到一个匹配的模板。

Python 相关文章推荐
Python高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
详细解读Python中的__init__()方法
May 02 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
Win10下python3.5和python2.7环境变量配置教程
Sep 18 Python
实例详解Matlab 与 Python 的区别
Apr 26 Python
Django MEDIA的配置及用法详解
Jul 25 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
python实现机器人卡牌
Oct 06 Python
python实现多进程按序号批量修改文件名的方法示例
Dec 30 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 Python
在Django框架中编写Context处理器的方法
Jul 20 #Python
详解Django框架中用context来解析模板的方法
Jul 20 #Python
Django中URLconf和include()的协同工作方法
Jul 20 #Python
在Python的Django框架中包装视图函数
Jul 20 #Python
Django中URL视图函数的一些高级概念介绍
Jul 20 #Python
Python的Django框架中从url中捕捉文本的方法
Jul 20 #Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 #Python
You might like
如何使用PHP中的字符串函数
2006/11/24 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
PHP图片库imagemagick安装方法
2014/09/23 PHP
php网页病毒清除类
2014/12/08 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
python学习之编写查询ip程序
2016/02/27 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Python读取图片属性信息的实现方法
2016/09/11 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
巧克力蛋糕店创业计划书
2014/01/14 职场文书
酒店总经理助理职责
2014/02/12 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
离婚起诉书范本
2015/05/18 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
花木兰观后感
2015/06/10 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android
python开发制作好看的时钟效果
2022/05/02 Python
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle