首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pyjade中使用python代码

在pyjade中使用python代码
EN

Stack Overflow用户
提问于 2013-04-03 04:52:50
回答 4查看 2.7K关注 0票数 4

我正在尝试使用pyjade生成一个列表,如下所示:

代码语言:javascript
复制
ul
  - for i, (label, link) in enumerate(tabs)
    li(class="selected" if i == selected_index else "")
      a(href=link)= label

但我看到了这个错误:

UndefinedError:“枚举”未定义

我一定是把python代码嵌入到Jade中是错误的。怎么做才是对的?

EN

回答 4

Stack Overflow用户

发布于 2013-06-13 18:31:27

Jade使用我所称的“隐式枚举”-它仅通过添加多一个变量i来枚举列表中的值,而不是需要解包的值:for item, i in list_like (对于dicts,您可以做for key, val in dict_like)。

下面是使用元组解压缩和“隐式枚举”的示例,用PyJade 2.0.2测试

代码语言:javascript
复制
- var selected_index = 0
- var tabs = [('hello', '/world'), ('citizens', '/please/respect_your_mother'), ('thank_you', '/bye')]
ul
    // unpack `tabs` and tack on the variable `i` to hold the current idx
    for label, link, i in tabs
        li(class="selected" if (i == selected_index) else "")
            a(href="#{link}") #{label}

注意:正如在“标准”Jade代码中比较常见的,在撰写本文时,PyJade for NOT 支持赋值的三元操作符。(variable= (condition)? value_if_true : value_if_false)

票数 4
EN

Stack Overflow用户

发布于 2013-04-03 19:12:03

不允许将任意的python代码嵌入到玉中。用翡翠的语法代替。

票数 1
EN

Stack Overflow用户

发布于 2014-04-23 07:53:35

您应该使用将函数添加到模板环境的方法,这是由篡改语言使用的,您可以将翡翠文件编译为使用pyjade。

对于使用jinja的水瓶,这应该放在您的__init__.py中:

代码语言:javascript
复制
app.jinja_env.globals.update(enumerate=enumerate)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15779120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档