2024-06-16 12:35:56 发布
网友
我想知道是否有一个技巧可以(轻松地)将一些python代码合并到moinmoin页面中,也许是通过添加一些action。我的想法是
<<< for j in [1,3,5]: print(i) >>>
在页面上显示为
快速和肮脏是可以的,安全不是一个问题,我想有一个独立的,desktop-mode安装这个。在
在您的moinmoin实例中,转到
data/macro
请确保有一个至少包含以下内容的\uuu init_uu.py:
然后在那里创建宏:
将此用作模板:
import StringIO import sys def macro_PyShell(macro, code): code_out = StringIO.StringIO() sys.stdout = code_out exec code.strip("'").strip('"') sys.stdout = sys.__stdout__ return macro.request.formatter.text(code_out.getvalue())
在wiki页面中,您现在应该能够使用以下命令调用该宏:
<<PyShell("for i in [1,2,3]:\n print i")>>
另一种方法是添加解析器。在
下面是Moinmoin's Hello World parser的一个非常快速和肮脏的改编。在
import StringIO import sys class Parser(): def __init__(self, raw, request, **kw): self.raw = raw self.request = request self.kw=kw def format(self, formatter): # Execute the code code_out = StringIO.StringIO() sys.stdout = code_out exec self.raw sys.stdout = sys.__stdout__ out_lines = code_out.getvalue().split("\n") # Print the output for out_line in out_lines: self.request.write(formatter.rawHTML(out_line+"<br>"))
如果它保存为path/to/MoinMoin/parser/interpret_python.py,那么您可以进入一个页面
path/to/MoinMoin/parser/interpret_python.py
它会产生文本
查看页面时。可以通过将执行限制为sandbox来保证安全(r)。在
在您的moinmoin实例中,转到
请确保有一个至少包含以下内容的\uuu init_uu.py:
^{pr2}$然后在那里创建宏:
^{3}$将此用作模板:
在wiki页面中,您现在应该能够使用以下命令调用该宏:
另一种方法是添加解析器。在
下面是Moinmoin's Hello World parser的一个非常快速和肮脏的改编。在
如果它保存为
^{pr2}$path/to/MoinMoin/parser/interpret_python.py
,那么您可以进入一个页面它会产生文本
^{3}$查看页面时。可以通过将执行限制为sandbox来保证安全(r)。在
相关问题 更多 >
编程相关推荐