ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用python处理ember.js标记的html

2019-11-27 18:56:43  阅读:283  来源: 互联网

标签:web2py templates ember-js python


我有以下情况:

>我们在服务器端使用web2py
>我们正在提供一些ember.js
>当前,这些ember.js页面位于iframe中,因为是ember.js and web2py conflict with template {{ }} marks.这意味着我们无法轻松地将web2py模板和ember.js模板混合使用.
>因此,我已经实现了助手类解决方案:em(DIV)类
>现在,我想处理原始的带有ember标签的html文件,并生成带有em标签的文件,将ember.js和web2py模板系统集成到一个内聚单元中.

为此,我需要将ember.js文件中所有{{XXX}}的实例更改为{{= em(‘XXX’)}},包括跨越多行的实例.我正在考虑在这里使用正则表达式,但我想避免重新发明轮子(并且必须处理奇怪的拐角处的情况)

您能想到python中解析此类模板的通用方法吗?只需查找开始和结束定界符({{和}}),然后放置= em(‘XXX’),处理换行符并保留格式(即如果有的话保留换行符)就可以了. .

注意:这实际上不是ember.js特有的;它可以应用于任何基于多行定界符的模板系统.

解决方法:

请注意,在web2py的主干版本(将在未来几天内以web2py 2.0发行)中,您现在可以为模板指定自定义分隔符-这样就可以更改web2py分隔符,以使其不再与余烬冲突. js定界符.例如,在模型文件中:

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

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

{%=P('hello world')%}
<p>{{ember template code}}</p>
{%=P('{{ember template code generated by web2py}}')%}

会产生:

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

请注意,对每个请求都设置了response.delimiters,因此,如果您不想更改所有页面上的web2py分隔符,而只更改包含余烬代码的页面,则可以有条件地设置response.delimiters(可以通过在特定操作中进行设置)需要它,或者通过检查模型文件中请求的控制器和/或功能).例如,在模型文件中:

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

或在控制器中:

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

标签:web2py,templates,ember-js,python
来源: https://codeday.me/bug/20191127/2076493.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有