我正在尝试使用pyjade生成一个列表,如下所示:
ul
- for i, (label, link) in enumerate(tabs)
li(class="selected" if i == selected_index else "")
a(href=link)= label但我看到了这个错误:
UndefinedError:“枚举”未定义
我一定是把python代码嵌入到Jade中是错误的。怎么做才是对的?
发布于 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测试
- 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)
发布于 2013-04-03 19:12:03
不允许将任意的python代码嵌入到玉中。用翡翠的语法代替。
发布于 2014-04-23 07:53:35
您应该使用将函数添加到模板环境的方法,这是由篡改语言使用的,您可以将翡翠文件编译为使用pyjade。
对于使用jinja的水瓶,这应该放在您的__init__.py中:
app.jinja_env.globals.update(enumerate=enumerate)https://stackoverflow.com/questions/15779120
复制相似问题