简单介绍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中使用wxPython开发的一个简易笔记本程序实例
Feb 08 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
Python实现excel转sqlite的方法
Jul 17 Python
python中hashlib模块用法示例
Oct 30 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
Linux下多个Python版本安装教程
Aug 15 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
在Pycharm中设置默认自动换行的方法
Jan 16 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
Python批量安装卸载1000个apk的方法
Apr 10 Python
django中related_name的用法说明
May 20 Python
浅析Python __name__ 是什么
Jul 07 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/10/09 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
js数组的操作详解
2013/03/27 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
2018/09/14 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
Python中变量交换的例子
2014/08/25 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
计算机网络专业求职信
2014/06/05 职场文书
护理医院见习报告
2014/11/03 职场文书
趣味运动会赞词
2015/07/22 职场文书