简单介绍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 sys.path详细介绍
Oct 17 Python
Python入门_浅谈逻辑判断与运算符
May 16 Python
python如何对实例属性进行类型检查
Mar 20 Python
Django 静态文件配置过程详解
Jul 23 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
Python PIL图片添加字体的例子
Aug 22 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
使用PyQt5实现图片查看器的示例代码
Apr 21 Python
python如何实现DES加密
Sep 21 Python
python中的plt.cm.Paired用法说明
May 31 Python
一篇文章带你了解Python和Java的正则表达式对比
Sep 15 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 HTML代码串截取代码
2008/12/29 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
pandas中去除指定字符的实例
2018/05/18 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
Etam德国:内衣精品店
2019/08/25 全球购物
大学生毕业鉴定
2014/01/31 职场文书
客户接待方案
2014/02/26 职场文书
士力架广告词
2014/03/20 职场文书
体育节口号
2014/06/19 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
高校教师个人总结
2015/02/10 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
800字作文之大雪
2019/12/04 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle