简单介绍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爬虫之爬虫的定义及URL构成
Nov 04 Python
Windows下安装python2.7及科学计算套装
Mar 05 Python
Python获取任意xml节点值的方法
May 05 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
Django REST framework 视图和路由详解
Jul 19 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 Python
python 定义函数 返回值只取其中一个的实现
May 21 Python
粗暴解决CUDA out of memory的问题
May 22 Python
如何用六步教会你使用python爬虫爬取数据
Apr 06 Python
Python Flask实现进度条
May 11 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函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP实现的迷你漂流瓶
2015/07/29 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
vue接口请求加密实例
2020/08/11 Javascript
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
营销总监岗位职责范本
2014/02/26 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
优质服务活动实施方案
2014/05/02 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
课外活动总结
2015/02/04 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
Oracle 死锁的检测查询及处理
2021/09/25 Oracle
各国货币符号大全
2022/02/17 杂记