处理余烬用python标记html

2024-06-25 07:11:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下情况:

  1. 我们正在服务器端使用web2py
  2. 我们正在提供一些ember.js
  3. 目前那些余烬页在iframe中,因为ember.js and web2py conflict with template {{ }} marks。这意味着我们不能轻易地混合web2py模板和余烬模板。在
  4. 所以我实现了helper类解决方案:class em(DIV)
  5. 现在,我要处理原始的带有ember标记的html文件,并生成带有em标记的文件,集成余烬以及web2py将系统模板化为一个内聚单元。在

为此,我需要在余烬文件到{=em('XXX')}},包括跨越多行的实例。我想在这里使用regex,但我想避免重新发明轮子(以及必须处理奇怪的角落案例)

你能想出一个在python中解析这类模板的通用方法吗。这只是一个寻找开始和结束分隔符({{}}),并放入=em('XXX')处理新行,以及保持格式(即,如果有新行,则保留新行)。在

注意:这实际上不是余烬它可以应用于任何基于多行分隔符的模板系统。在


Tags: and文件标记模板系统服务器端js情况
2条回答

可能值得尝试一种方法余烬在单独的文件中填充,不要与web2py模板混合使用。幸运的是,余烬很容易就能做到。在

注意,在web2py的主干版本中(它将在未来几天作为web2py 2.0发布),您现在可以为模板指定自定义分隔符,这样您就可以更改web2py分隔符,使它们不再与余烬分隔符。例如,在模型文件中:

response.delimiters = ['{%', '%}']

然后在web2py模板中,您可以执行以下操作:

^{pr2}$

将产生:

<p>hello world</p>
<p>{{ember template code}}</p>
<p>{{ember template code generated by web2py}}</p>

注意,响应.分隔符在每个请求上设置,因此如果您不想更改所有页面上的web2py分隔符,而只更改那些包含成员代码的页面,则可以设置响应.分隔符有条件地(通过在需要它的特定操作中设置它,或者通过检查模型文件中请求的控制器和/或函数)。例如,在模型文件中:

if request.function in ['action1', 'action2', 'action3']:
    response.delimiters = ['{%', '%}']

或者在控制器中:

def action1():
    response.delimiters = ['{%', '%}']
    [etc.]

相关问题 更多 >