简单介绍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 struct模块解析
Jun 12 Python
python采集博客中上传的QQ截图文件
Jul 18 Python
解决Python下imread,imwrite不支持中文的问题
Dec 05 Python
Python定时任务APScheduler的实例实例详解
Jul 22 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
python PIL/cv2/base64相互转换实例
Jan 09 Python
Python创建空列表的字典2种方法详解
Feb 13 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
python 实现德洛内三角剖分的操作
Apr 22 Python
用Python监控你的朋友都在浏览哪些网站?
May 27 Python
python 中yaml文件用法大全
Jul 04 Python
Python代码实现双链表
May 25 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
使用 php4 加速 web 传输
2006/10/09 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
php防止伪造的数据从URL提交方法
2014/06/27 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
Python写的一个简单DNS服务器实例
2014/06/04 Python
python3.x上post发送json数据
2018/03/04 Python
python 阶乘累加和的实例
2019/02/01 Python
Python 监测文件是否更新的方法
2019/06/10 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
java字符串格式化输出实例讲解
2021/01/06 Python
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
财务管理专业毕业生求职信范文
2013/09/21 职场文书
给校长的建议书600字
2014/05/15 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
幽默导游词开场白
2015/05/29 职场文书
婚宴新郎致辞
2015/07/28 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
Redis的字符串是如何实现的
2021/10/24 Redis