标签: genshi

在Jinja 2中的包含文件顶部插入javascript

在Jinja2中,我希望通过运行以下内容来实现它的运行:

from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('.'))
template = env.get_template('x.html')
print template.render()
Run Code Online (Sandbox Code Playgroud)

本质上,目标是<head>通过使用{% call js() %} /* some js */ {% endcall %}宏来将所有javascript合并到标签中.


x.html

<html>
<head>
  <script type="text/javascript>
  {% block head_js %}{% endblock %}
  </script>
  </head>
<body>
  {% include "y.html" %}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

y.html

{% macro js() -%}
    // extend head_js
    {%- block head_js -%}
    {{ super() }}
    try { {{ caller() }} } catch (e) {
       my.log.error(e.name + ": " + e.message);
    } …
Run Code Online (Sandbox Code Playgroud)

python templates mako genshi jinja2

10
推荐指数
1
解决办法
1万
查看次数

为什么在__new__之后没有调用__init__

让我从这开始不重复 为什么__init__如果没有args调用__new__就不会被调用.我试图精心构建了一些示例代码__new____init__有没有解释,我可以找到.

基本参数:

  • 有一个名为NotMine的基类,因为它来自另一个库(我最后会透露,这里不重要)
  • 该类有一个__init__方法,反过来调用一个_parse方法
  • 我需要覆盖_parse子类中的方法
  • 我正在创建的子类直到调用才知道
  • 我知道有工厂设计方法,但我不能在这里使用它们(更多在最后)
  • 我试图小心使用super以避免Python日志记录中的问题 :为什么__init__被调用两次?
  • 我知道这也是一种AbstractBaseMehtod机会,但这并没有帮助

无论如何,__init__应该在之后调用__new__以及为什么下面的一些样本不起作用的每个解释我似乎能够指出其他有用的情况并排除解释.

class NotMine(object):

    def __init__(self, *args, **kwargs):
        print "NotMine __init__"
        self._parse()

    def _parse(self):
        print "NotMine _parse"

class ABC(NotMine):
    def __new__(cls,name,*args, **kwargs):
        print "-"*80
        print "Entered through the front door ABC.__new__(%s,%s,*%s,**%s)"%(cls,name,args,kwargs)
        if name == 'AA':
            obj = super(NotMine,ABC).__new__(AA,*args,**kwargs)
            print "Exiting door number 1 with an instance of: %s"%type(obj)
            return obj 
        elif …
Run Code Online (Sandbox Code Playgroud)

python genshi

10
推荐指数
1
解决办法
5434
查看次数

我应该使用Mako进行模板化吗?

我一直在考虑一个模板解决方案,虽然我的选择是在Mako和Genshi之间.我觉得Genshi的模板有点难看,所以我更倾向于Mako.

我已经开始怀疑:Mako允许嵌入式Python代码这一事实有什么好处?一般的乔怎么方便?

如果没有嵌入Python代码,那么模板化是否足够?

python template-engine mako genshi

7
推荐指数
2
解决办法
6154
查看次数

Genshi:if/else

如何在Genshi模板语言中使用简单的if/else?

我找到了这张票,这似乎表明Genshi不支持if/else,但它并没有真正解释它支持的内容.

我基本上只想要这样的东西:

  <py:if test="c.row.currency">
  ${c.row.currency.upper()}
  <py:else>
  ${c.row.dataset_.currency.upper()} 
  </py:if>
Run Code Online (Sandbox Code Playgroud)

但我得到'坏指令:别的'.我应该使用py:选择吗?我无法真正理解如何将它用于if/else条件.

python pylons genshi

6
推荐指数
1
解决办法
4211
查看次数

检查tmpl_context(Python,Pylons,Genshi)中是否存在变量?

我试图弄清楚如何使用Pylons和Python检查模板上下文'tmpl_context'中是否存在变量.我想要做的是:

我有一个Pylons布局模板.当且仅当变量c.messages存在于上下文中时,这应包含消息部分.消息部分如下所示:

<div py:if="len(c.messages) > 0">
  <py:for each="msg in c.messages">
    <strong>${msg}</strong>
  </py:for>
</div>
Run Code Online (Sandbox Code Playgroud)

如果控制器未定义c.messages,则会产生错误.所以我只想在定义变量时才包含它.有这个问题的解决方案吗?

python pylons genshi

6
推荐指数
1
解决办法
1243
查看次数

如何使用 genshi.builder 以编程方式构建 HTML 文档?

我最近发现了 genshi.builder 模块。它让我想起了 Divmod Nevow 的 Stan 模块。如何使用 genshi.builder.tag 构建具有特定文档类型的 HTML 文档?或者这甚至是一件好事?如果没有,正确的方法是什么?

html python templates genshi

4
推荐指数
1
解决办法
1544
查看次数

可以阻止Genshi解析HTML实体吗?

我使用Genshi(简化)有以下Python代码:

with open(pathToHTMLFile, 'r') as f:
    template = MarkupTemplate(f.read())
finalPage = template.generate().render('html', doctype = 'html')
Run Code Online (Sandbox Code Playgroud)

源HTML文件中包含的实体,如&copy;,&trade;&reg;.Genshi用它们的UTF-8字符替换它们,这会导致查看器出现问题(输出用作独立文件,而不是对Web请求的响应),最终会看到生成的HTML.有没有办法阻止Genshi解析这些实体?比较常见的那些&amp;通过就好了.

html python entities genshi

3
推荐指数
1
解决办法
1445
查看次数

genshi和javascript&符号?

我的genshi模板中有以下javascript,我不确定如何在没有错误的情况下解析它:

floor = (!floor && floor !== 0)? 20 : floor;
Run Code Online (Sandbox Code Playgroud)

我试过这个:

floor = (!floor &amp&amp floor !== 0)? 20 : floor;
Run Code Online (Sandbox Code Playgroud)

但它总是会产生这个错误:

'genshi.template.base.TemplateSyntaxError'>格式不正确(无效令牌)

有什么想法吗?

javascript genshi

1
推荐指数
1
解决办法
1088
查看次数