简单介绍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中使用HTMLParser解析html实例
Feb 08 Python
python使用datetime模块计算各种时间间隔的方法
Mar 24 Python
详细介绍Python函数中的默认参数
Mar 30 Python
Python实现的Excel文件读写类
Jul 30 Python
python读取二进制mnist实例详解
May 31 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
MySQL适配器PyMySQL详解
Sep 20 Python
Python实现一个简单的验证码程序
Nov 03 Python
python thrift搭建服务端和客户端测试程序
Jan 17 Python
解决pyttsx3无法封装的问题
Dec 24 Python
使用Python和百度语音识别生成视频字幕的实现
Apr 09 Python
Python 利用flask搭建一个共享服务器的步骤
Dec 05 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 number_format() 函数通过千位分组来格式化数字的实现代码
2013/08/06 PHP
php使用curl获取https请求的方法
2015/02/11 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
jQuery 无刷新分页实例代码
2013/11/12 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
2015/08/04 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
python计算牛顿迭代多项式实例分析
2015/05/07 Python
在Python的Django框架中加载模版的方法
2015/07/16 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
Python中six模块基础用法
2019/12/08 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
Django values()和value_list()的使用
2020/03/31 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
财务部总监岗位职责
2014/03/12 职场文书
信访工作个人总结
2015/03/03 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
预备党员党支部意见
2015/06/02 职场文书
服装店员工管理制度
2015/08/07 职场文书
mysql sock文件存储了什么信息
2022/07/15 MySQL