Django车把
django-handlebars的Python项目详细描述
django手柄集成了Handlebarsjavascript模板引擎和Django。它提供了用于包装模板包含和加载例程的python和javascript帮助程序。可选的django handlebars提供了便于编译的manage.py命令(需要python-spidermonkey)和实时模板资源同步(需要pyinotify)。
如何安装
- 从pypipip install django-handlebars安装包。或者拉动repo并运行python setup.py install
- 将django_handlebars添加到项目的settings.INSTALLED_APPS
- 可选地将HANDLEBARS_*配置参数添加到settings.py。有关可用选项和说明,请参见django_handlebars.appsettings。
- 运行./manage.py test django_handlebars检查配置和要求。
- 应该就是这样。应用程序没有提供任何模型或url。
如何使用
django手柄可以在两种模式下工作:在浏览器中编译模板和在服务器端呈现预编译的模板。在这两种情况下,模板可能随ajax请求动态加载,或者包含在页面上以防止额外的http请求。
首先,您必须在页面上插入把手脚本:
{% load handlebars_tags %} <html> <head> {% handlebars_scripts %} </head> <body></body> </html>
它将添加handlebars_config变量存储配置,script标记handlebars.js(如果settings.HANDLEBARS_COMPILED是True,则添加handlebars.runtime.js标记)和handlebars.django.js。django handlebars通过使用tpl()方法扩展handlebars对象,提供了模板加载客户端(参见handlebars.django.js)。
在浏览器中编译
此模式更简单,不需要满足可选依赖项。但这会增加一些开销。在这种情况下,handlebar将每隔加载一次页面就解析一次模板,除了渲染器之外,还必须加载解析器脚本。
假设您已经配置了应用程序,并且您的把手*.html模板可以从静态url访问,那么您的典型使用模式如下:
var data = {title: "The title", body: "whatever"} Handlebars.tpl("your/template/spec", { success: function(renderer){ console.log("Rendered template:", renderer(data)); }, error: function(xhr, err){ console.warn("Ooops, can't load template", err); } });
请注意,模板路径不包括dir url和扩展名。允许起始斜杠。Handlebars.tpl不返回模板,只有success回调才能获取模板。
默认情况下,客户端尝试使用jQuery如果它可用,否则它将返回到自己的简单crossbrowser xhr实现。如果jquery可用,Handlebars.tpl()调用将返回jquery.deferred对象,因此可以使用链接和其他好处:
var df = Handlebars.tpl("your/template/spec"); df.done(function(renderer){ console.log("Rendered template:", renderer(data)); }).fail(function(xhr, err){ console.warn("Ooops, can't load template", err); });
loader追加.html扩展名并从settings.HANDLEBARS_TPL_URL
使用预编译模板
在此模式下,javascript代码保持不变,但客户端将尝试从settings.HANDLEBARS_TPL_URL中提取.js文件。预编译文件包含由Handlebars.precompile(str_template)生成的js函数。您可以在浏览器控制台中运行此命令以查看其外观。django handlebars提供manage.py命令来批量生成这些文件。
消除额外的请求
在上述两种情况下,都会发出http请求,这会降低性能。为了避免出现这种情况,请在页面上包含模板:
{% handlebars_template "your/template/spec" %}
这将通过调用Handlebars.tpl("your/template/spec", tpl)来缓存模板。所描述的技术适用于常规和预编译模式。
如何编译
运行./manage.py compilehandlebars --help:
--clean Remove all previously compiled templates --watch Watch for changes within appsettings.TPL_DIR and compile --raw Do not format output --quiet Run with no output
django hadlebars使用SpiderMonkey运行handlebars脚本来编译模板,并要求安装python-spidermonkey包。
到目前为止,--watch选项仅在linux平台上可用,因为它使用的是pyinotify。未来可能会增加对其他平台的支持。
如果这两个都没有安装,{TT27 } $将以适当的错误消息退出。
在compilehandlebars开始时,将重新编译mtime比编译文件mtime新的所有模板文件。如果您运行的命令没有^ {TT26},编译器退出一次所有文件编译,否则它将挂起,直到你按下^ {TT30}$。
许可证
版权所有2012 Sergii Iavorskyi,许可新型BSD。包含Handlebars.js版权所有2011 Y伊胡达·卡茨。有关详细信息,请参见许可证文件。