4

次のように、pyjadeを使用してリストを生成しようとしています:

ul
  - for i, (label, link) in enumerate(tabs)
    li(class="selected" if i == selected_index else "")
      a(href=link)= label

しかし、次のエラーが表示されます。

UndefinedError:「列挙」は未定義です

Pythonコードをジェイドに間違って埋め込んでいるに違いありません。これを行う正しい方法は何ですか?

4

4 に答える 4

4

Jade は、私が「暗黙の列挙」と呼んでいるものを使用します。これは、アンパックする値よりも変数を 1 つ追加するだけで、リスト内の値を列挙しiますfor item, i in list_likefor 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 は代入の三項演算子をサポートしていません。( variable= (condition)? value_if_true : value_if_false)

于 2013-06-13T18:31:27.140 に答える
1

pyjade を使用して jade ファイルをコンパイルする tamplate 言語で使用されるテンプレート環境に関数を追加する方法を使用する必要があります。

jinja を使用する Flask の場合、これを __init__.py に入れる必要があります。

app.jinja_env.globals.update(enumerate=enumerate)
于 2014-04-23T07:53:35.307 に答える
0

あなたはpypugjs(pyjadeの後継)でそれを行うことができます

li(class=("selected" if i == selected_index else ""))
于 2018-01-12T11:35:25.773 に答える