Django模板标签,用于安全嵌入ICanHaz.js模板。
项目描述
一个模板标签,用于更轻松地将ICanHaz.js JavaScript模板与Django模板集成。
快速入门
依赖项
已与Django 1.3通过trunk测试,以及Python 2.6和2.7。几乎可以肯定,它们与这两个版本的老版本兼容。
安装
使用pip从PyPI安装
pip install django-icanhaz
或获取开发中的版本
pip install django-icanhaz==dev
使用方法
将"icanhaz"添加到您的INSTALLED_APPS设置中。
将ICANHAZ_DIRS设置为一个包含您将存储ICanHaz模板的目录的完整(绝对)路径列表。
{% load icanhaz %}并在您的Django模板中使用{% icanhaz "templatename" %}来安全地嵌入ICanHaz.js模板,在<ICANHAZ_DIRS-entry>/templatename.html中,自动包装在<script id="templatename" type="text/html">中,以便在您的JavaScript中使用ich.templatename({...})。
django-icanhaz不捆绑ICanHaz.js或提供任何JavaScript工具;它只是帮助您轻松地将模板嵌入到HTML中。将ICanHaz.js包含到您的项目静态资源中,并像往常一样在JS中使用它。
高级用法
您还可以将 ICanHaz 模板与 Django 可重用应用捆绑在一起;默认情况下,django-icanhaz 将在 INSTALLED_APPS 中每个应用的 jstemplates 子目录中查找模板。要检查的应用子目录名称可以通过 ICANHAZ_APP_DIRNAMES 设置进行配置,默认值为 ["jstemplates"]。
模板的查找可以通过 ICANHAZ_FINDERS 设置完全控制,它是一个指向查找器类的点分路径列表。查找器类应该可以无参数实例化,并有一个 find(name) 方法,该方法在给定基本名称的情况下返回模板文件的完整绝对路径。
默认情况下,ICANHAZ_FINDERS 包含 "icanhaz.finders.FilesystemFinder"(它搜索 ICANHAZ_DIRS 中列出的目录)和 "icanhaz.finders.AppFinder"(它搜索 INSTALLED_APPS 中每个应用在 ICANHAZ_APP_DIRNAMES 中命名的子目录),按此顺序 – 因此在 ICANHAZ_DIRS 中找到的模板优先于应用中的模板。
理由
Django 模板使用 {{ 和 }} 作为模板变量标记与 ICanHaz.js 使用相同的标记之间发生了冲突,从而产生了各种解决方案。一种解决方案简单地用 {{ 和 }} 替换了一个 icanhaz 模板标签内的 [[ 和 ]];另一种方案在 Django 模板标记被 Django 模板解析器破坏后,英勇地尝试重建 Django 模板块内的文本。
我无论如何都喜欢将我的 JavaScript 模板保存在专用目录中的单独文件中,以避免服务器端和客户端模板之间的混淆。所以我对这些解决方案的贡献基本上只是一个避免将包含的文件解析为 Django 模板的“包含”标签(并且为了方便,自动将其包装在 ICanHaz.js 期望找到它的脚本标签中)。
享受吧!
变更记录
0.2.1 (2012.01.09)
修复了使用 Django 的 FILE_CHARSET 设置显式解码模板文件内容的问题。感谢 Eduard Iskandarov。
修复了 ICANHAZ_DIRS 中非规范化目录导致的模板查找失败。感谢 Eduard Iskandarov 提供报告和补丁。
0.2.0 (2011.06.26)
使模板查找更灵活:现在 ICANHAZ_DIR 是 ICANHAZ_DIRS(一个列表);添加了 ICANHAZ_FINDERS、ICANHAZ_APP_DIRNAMES 和在已安装应用中查找模板。
0.1.0 (2011.06.22)
初始发布。
待办事项
项目详情
django-icanhaz-0.2.1.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 947de2503c9c03f22db4ebab22664ddba1a9cec67fed482596b348d8f4561536 |
|
MD5 | 13f49eac67418895f4461e57aa4469d4 |
|
BLAKE2b-256 | bc0f7d4e08a8e3cf47b5fc48160d91a5ab883381307d4c19819f52ac6e67ed56 |