python模板引擎。

backslant的Python项目详细描述


backplant是一个模板引擎,它的构建方式与以前完全不同。


您可以将迭代器或生成器作为输入馈送,并获得迭代输出。

第三-它通过导入工作。如果你想得到模板,只需导入并使用它。如果您想要包含
其他模板-导入它。如果你想在某个目录模板,导入它!就像“来自”。导入其他模板``.
使用绝对导入或相对导入。

backslant.backslantfinder())


如果要将呈现的HTML发送到浏览器:

h1“header”header“


您可以定义一个函数:

-def render_form(method):
form(method=method)
input(type=“text”value=“123”)


end call it:

h1
==render_form('post')


是的,这很简单,您只需使用python构造。这里的`=`是`-yield from`.
,`=`是`-yield`.

的快捷方式,现在可以用函数来继承模板。

base.bs:

!doctype/html
html
head
title“页面标题”
body
h1{'class':''.join(['main','content'],“ng app”:“application”}
页眉
div.content
==options['content_block'](
div.footer
backslant 2015


index.bs:

-from。import base
-def content():
-for i in range(10):
p
='paragraph{}'。format(i)
==base.render(content\u block=content)



但是我们有语法糖:

:call base.render(*options)
:content_block
-对于范围(10)内的i:
p
=paragraph{}。format(i)
:footer_block
p“index page”

参数
----

您可以使用arg=`parentised python expression or variable name`或
`tag.class{'a':5,'b':''.join(options.classes)}`表单。




render或not render?
---------


编译模板时,我们需要它以某种方式放置在模块中。如果您在顶层有任何标记或调用,
,那么我们肯定必须将它们放入函数中。我们为此创建“render”函数。
然后导入模板并调用此“render”。

然后backlant不会在“render”函数中隐式覆盖
,这是定义模板libs的方法。你甚至可以在PyPI上分发它。
BR/> BR/>烧瓶
-
BR/>如果你想把反斜率整合到现有的项目中,重写所有模板是很痛苦的。因此
我们有解决方法:

从backplant.flask导入extend_jinja2,包括_jinja2



-来自Backlant.Flask Import Extend_Jinja2,include_jinja2

:调用extend_jinja2('layouts/base.html')
-def content(ctx):
==include_jinja2('layouts/header.html')
div.container
div.page-header
h1
=选项[“公司]。别名



你可以将性能与Jinja2进行比较。
几乎相等。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用prepared语句在oracle中插入日期   对点具有双重值的java   使用多个通配符的java请求映射   java Springboot为什么要设置springbootstartertomcat   除了对JavaBean的请求之外,还使用servletContext的servlet   java如何清除OCSID。返回到池的连接时的CLIENTID JDBC客户端信息属性   将整型数组转换为光栅Java   java使用对象引用作为互斥锁   java为什么在编程语言中使用sin函数返回奇怪的sin值不像计算器   java如何将JButton链接到对象并调用相关方法   php用Java发送POST数据   导航属性的java模拟加载   java多个活动错误Android试图对空对象引用调用虚拟方法“”   java Android更改ActionBar文本颜色   如何使用带有java反射且不带开关的parant引用创建子类