简单介绍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爬虫之HTTP异常处理
Nov 05 Python
基于Python实现的百度贴吧网络爬虫实例
Apr 17 Python
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
python3抓取中文网页的方法
Jul 28 Python
python 调用win32pai 操作cmd的方法
May 28 Python
Python IDLE入门简介
Dec 08 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
python 显示数组全部元素的方法
Apr 19 Python
python3使用smtplib实现发送邮件功能
May 22 Python
numpy数组广播的机制
Jul 12 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
Python的Tqdm模块实现进度条配置
Feb 24 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正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
详解A标签中href=""的几种用法
2017/08/20 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
python解析中国天气网的天气数据
2014/03/21 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
django创建超级用户过程解析
2019/09/18 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
护士个人简历自荐信
2013/10/18 职场文书
生产厂厂长岗位职责
2013/12/25 职场文书
周鸿祎:教你写创业计划书
2013/12/30 职场文书
我的五年职业生涯规划
2014/01/23 职场文书
电脑专业个人求职信范文
2014/02/04 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
暑假安全保证书
2015/02/28 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
检讨书格式范文
2015/05/07 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python