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

2024-01-29

我有以下场景:

  1. 我们正在使用web2py http://www.web2py.com在服务器端
  2. 我们正在服务一些ember.js http://emberjs.com/ pages
  3. 目前这些 ember.js 页面位于 iframe 内,因为ember.js 和 web2py 与模板 {{ }} 标记冲突 https://groups.google.com/forum/m/#!msg/web2py/-CrviALMVy8/5ly-u8SVnu4J。这意味着我们不能轻易混合 web2py 模板和 ember.js 模板。
  4. 所以我实现了辅助类解决方案:class em(DIV)
  5. 现在我想处理原始的 ember 标记的 html 文件,并生成em 标签文件,将 ember.js 和 web2py 模板系统集成到一个有凝聚力的单元中。

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

你能想到 python 中解析此类模板的通用方法吗?这只是寻找开始和结束分隔符的问题({{ and }}),并把=em('XXX'), 处理换行符, and 保持格式(也就是说,如果有换行符,则保留换行符)。

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


请注意,在 web2py 的主干版本(将在接下来的几天内作为 web2py 2.0 发布)中,您现在可以为模板指定自定义分隔符——这样您就可以更改 web2py 分隔符,使它们不再与 ember 冲突。 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 分隔符,而只想更改包含 ember 代码的页面上的 web2py 分隔符,则可以有条件地设置 response.delimiters (通过在特定操作中设置它)需要它,或者通过检查模型文件中请求的控制器和/或功能)。例如,在模型文件中:

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

或在控制器中:

def action1():
    response.delimiters = ['{%', '%}']
    [etc.]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python 处理 ember.js 标记的 html 的相关文章

  • 带有元数据的 scipy kdtree

    我目前正在寻找一种方法来构建几个 kd 树以快速查询一些 n 维数据 但是 我对 scipy KD 树算法有一些问题 我的数据包括id gt data somedata coordinate x y 我希望能够基于坐标和 k 最近邻居的 i
  • 如何计算Numpy数组中特定范围内的值?

    我有一个 NumPy 值数组 我想计算有多少个值在特定范围内 例如 x25 我已阅读有关计数器的信息 但它似乎仅对特定值有效 对值范围无效 我已经搜索过 但没有找到任何关于我的具体问题的信息 如果有人能指出我正确的文档 我将不胜感激 谢谢
  • 使用输入按钮处理网站上的分页

    试图使用硒抓取这个网站 我的代码可以工作 但目前它只抓取第一页 该页面使用输入按钮作为浏览页面的一种方式 因此我想逐个单击每个按钮 但它不起作用 有没有人有任何其他方法来处理此类分页的导航 import requests from sele
  • XGBoost 产生预测结果和概率

    我可能正在文档中查看它 但我想知道 XGBoost 是否有办法生成结果的预测和概率 就我而言 我正在尝试预测多类分类器 如果我能返回Medium 88 那就太好了 分类器 中 预测概率 88 参数 params max depth 3 ob
  • Python daysBetweenDate

    我想我可能有一个无限循环 因为每当我运行代码时 我都会收到一条错误消息 它说 程序因使用 13 CPU 秒而关闭 整个代码 应该以日期作为输入并输出第二天 此代码假设所有月份都是 30 天 除了daysBetweenDates功能正常 其他
  • python 队列获取大小,使用 qsize() 还是 len()?

    我见过这样的例子qsize and len 已用于计算队列的大小 两者有什么区别 对于大多数容器 您需要len but Queue Queue实际上并不支持len 这可能是因为它很旧 或者因为在多线程环境中获取队列的长度并不是特别有用 无论
  • SFINAE 无法有条件地编译成员函数模板

    我正在尝试你使用std enable if使用 SFINAE 和以下代码有条件地仅选择两个成员函数模板中的一个 include
  • 加速 Numpy 数组上的循环

    在我的代码中 我有一个 for 循环 它对多维 numpy 数组进行索引 并使用每次迭代时获得的子数组进行一些操作 看起来像这样 for sub in Arr do stuff using sub 现在使用完成的东西sub是完全矢量化的 所
  • 如何在Python中使用getopt/OPTARG?如果给出太多参数 (9),如何转移参数?

    如何在Python中使用getopt optarg 这是我如何做到这一点的示例 我通常使用相同的基本模板 import sys import getopt try opts args getopt getopt sys argv 1 m p
  • 使用 pybind11 修改 std::array 的默认值

    我的目标是修改在中声明的数组C struct并赋予默认值 我读过了this https pybind11 readthedocs io en stable advanced cast stl html making opaque types
  • NoneType 类型的对象没有 len

    def medianeven L while len L gt 2 L L 1 len L 1 return average L def medianodd L while len L gt 1 L L 1 len L 1 return L
  • 使用 Click 在 python 中创建命令行应用程序

    我正在使用 Python 创建一个命令行应用程序Click http click pocoo org 接受名称作为输入的库 但如果未输入名称 则返回默认值 这是我到目前为止的代码 hello py import click click ve
  • 如何在 Pandas 中将多列乘以一列

    我想拥有 df income 1 income 2 df mtaz proportion 返回这些列乘以df mtaz proportion 这样我就可以设置 df mtaz income 1 mtaz income 2 df income
  • 正则表达式 - Python - 删除前导空格

    我使用正则表达式在文本文件中搜索 产品 一词 然后 我使用该搜索的起点和终点来查看该列并提取整数 有些实例 A 列 有我不想要的前导空格 我只想将数字 如 B 列中的数字 打印到文件中 没有前导空格 正则表达式中的正则表达式 有条件的 pr
  • 树莓派上的 /dev/mem 访问被拒绝

    我正在使用我的 Raspberry Pi 并且正在编写一个 cgi python 脚本 该脚本创建一个网页来控制我的 gpio 输出引脚 当我尝试将 RPi GPIO 作为 GPIO 导入时 我的脚本崩溃了 这是我收到的错误 File co
  • 在Python中寻找坐标系中某些点之间的最短路径

    我编写了一个代码 可以在坐标系中的特定宽度和长度范围内生成所需数量的点 它计算并列出我使用欧几里德方法生成的这些点的距离矩阵 我的代码在这里 import pandas as pd from scipy spatial import dis
  • 使用 ABCMeta 和 EnumMeta 的抽象枚举类[重复]

    这个问题在这里已经有答案了 简单的例子 目标是通过从两者派生的元类创建一个抽象枚举类abc ABCMeta and enum EnumMeta 例如 import abc import enum class ABCEnumMeta abc
  • 使 ArrayField 的 base_field 对于 Django 中的表来说是唯一的

    Goal 下面应该提出一个ValidationError gt gt gt m1 MyModel names name1 gt gt gt m2 MyModel names name1 name2 gt gt gt m1 save gt g
  • 在 django 视图中执行阻塞请求

    在我的 django 应用程序的一个视图中 我需要执行相对较长的网络 IO 操作 问题是其他请求必须等待该请求完成 即使它们与该请求无关 我做了一些研究并偶然发现了 Celery 但据我了解 它用于执行独立于请求的后台任务 所以我不能使用任
  • 在python中读取证书(.crt)和密钥(.key)文件

    因此 我使用 JIRA Python 模块连接到我公司的 JIRA 实例 它要求我为此传递证书和密钥 但是 使用 OpenSSL 模块 我无法读取本地证书和密钥来将其传递给请求 阅读代码如下 import OpenSSL crypto c

随机推荐