用于安全嵌入icanhaz.js模板的django模板标记。
django-icanhaz的Python项目详细描述
一个templateTag,用于更容易地将ICanHaz.jsjavascript模板与 Django模板。
快速启动
安装
使用pip:
从pypi安装pip install django-icanhaz
pip install django-icanhaz==dev
使用量
- 将"icanhaz"添加到INSTALLED_APPS设置中。
- 将ICANHAZ_DIRS设置设置为完整(绝对)路径列表 目录,您将存储您的icanhaz模板。
- {% load icanhaz %}并在 django模板安全嵌入icanhaz.js模板 <ICANHAZ_DIRS-entry>/templatename.html进入你的django模板, 自动包装在<script id="templatename"type="text/html">, 准备好在javascript中使用ich.templatename({...})。
django-icanhaz不捆绑ICanHaz.js或提供任何javascript 实用程序;它只是帮助您轻松地将模板嵌入到HTML中。包括 ICanHaz.js在项目的静态资产中,并像往常一样在js中使用它。
高级使用
您还可以将icanhaz模板与django可重用应用程序捆绑在一起;默认情况下 django-icanhaz将在的jstemplates子目录中查找模板 INSTALLED_APPS中的每个应用程序。要检查的应用子目录名可以是 通过ICANHAZ_APP_DIRNAMES设置配置,默认为 ["jstemplates"]。
模板的查找可以通过^{tt16}完全控制$ 设置,这是指向查找程序类的虚线路径列表。发现类 应该是不带参数的可实例化的,并且有一个find(name)方法 它返回给定基名称的模板文件的完整绝对路径。
默认情况下,ICANHAZ_FINDERS包含"icanhaz.finders.FilesystemFinder" (搜索ICANHAZ_DIRS中列出的目录)和 "icanhaz.finders.AppFinder"(搜索 INSTALLED_APPS中每个应用程序的{tt14}$,按顺序排列- 因此,在ICANHAZ_DIRS中找到的模板优先于 应用
基本原理
django模板使用{{和}}作为模板之间的冲突 变量标记和ICanHaz.js的使用产生了 解决。One solution只需将[[和]]替换为{{和 }}在icanhaz模板标记中;another进行了有效的尝试 在django模板块中重建逐字文本 已经被django模板标记器损坏。
我更喜欢将javascript模板保存在单独的文件中 目录,以避免服务器端和客户端之间的混淆 模板制作。所以我对一系列解决方案的贡献本质上就是 “include”标记避免将包含的文件解析为django模板(和 为了方便起见,自动将其包装在脚本标记中,该标记是ICanHaz.js 希望能找到它)。
享受吧!
更改
0.2.1(2012.01.09)
- 固定模板读取显式解码模板文件内容使用 django的FILE_CHARSET设置。谢谢爱德华伊斯坎达罗夫。
- 修复了在 ICANHAZ_DIRS。感谢Eduard Iskandarov的报告和补丁。
0.2.0(2011.06.26)
- 使模板查找更加灵活:^ {TT34 } $现在是^ {TT4}$ (列表);添加了ICANHAZ_FINDERS,ICANHAZ_APP_DIRNAMES,并查找 已安装应用中的模板。
0.1.0(2011.06.22)
- 初次发布。