简单介绍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中__call__用法实例
Aug 29 Python
python进阶教程之模块(module)介绍
Aug 30 Python
Python使用OpenCV进行标定
May 08 Python
Python线程之定位与销毁的实现
Feb 17 Python
python从入门到精通 windows安装python图文教程
May 18 Python
python3.6根据m3u8下载mp4视频
Jun 17 Python
pytorch加载自定义网络权重的实现
Jan 07 Python
Python实现不规则图形填充的思路
Feb 02 Python
Python Handler处理器和自定义Opener原理详解
Mar 05 Python
关于keras中keras.layers.merge的用法说明
May 23 Python
python实现定时发送邮件
Dec 23 Python
python使用numpy中的size()函数实例用法详解
Jan 29 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
js类 from qq
2006/11/13 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
python使用win32com库播放mp3文件的方法
2015/05/30 Python
Python温度转换实例分析
2018/01/17 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
机械制造毕业生求职信
2014/03/03 职场文书
委托书范文
2014/04/02 职场文书
银行职员自我鉴定
2014/04/20 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
MySQL七大JOIN的具体使用
2022/02/28 MySQL
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers
Python find()、rfind()方法及作用
2022/12/24 Python