[解決済み] Jinja2テンプレートでif-elif-else文が正しく描画されない。
質問
jinja2のテンプレートで、cssを使用して文字色を設定しようとしています。 以下のコードでは、変数に文字列が含まれている場合、出力文字列を特定のフォント色で印刷するように設定したいです。 テンプレートが生成されるたびに、else文のために赤で印刷されますが、出力が一致するはずなのに、最初の2つの条件を見ることはありません。 デフォルトで文字列が赤で印刷されるため、私のCSSが正しいことは分かっています。
最初に考えたのは、チェックする文字列を引用符で囲むことだったのですが、うまくいきませんでした。 次に考えたのは、jinjaが
RepoOutput[RepoName.index(repo)]
が、その上のforループは動作します。
RepoName
が正しく展開されます。 中括弧を追加すると、変数が表示されますが、これはテンプレートが壊れるか、単に動作しないかのどちらかだと確信しています。
これらのサイトを見て、グローバル表現のリストも見てみましたが、私と同じような例や、さらに調べるべき方向は見つかりませんでした。
http://jinja.pocoo.org/docs/templates/#if
http://wsgiarea.pocoo.org/jinja/docs/conditions.html
{% for repo in RepoName %}
<tr>
<td> <a href="http://mongit201.be.monster.com/icinga/{{ repo }}">{{ repo }}</a> </td>
{% if error in RepoOutput[RepoName.index(repo)] %}
<td id=error> {{ RepoOutput[RepoName.index(repo)] }} </td> <!-- I want this in green if it is up-to-date, otherwise I want it in red -->
{% elif Already in RepoOutput[RepoName.index(repo)] %}
<td id=good> {{ RepoOutput[RepoName.index(repo)] }} </td> <!-- I want this in green if it is up-to-date, otherwise I want it in red -->
{% else %}
<td id=error> {{ RepoOutput[RepoName.index(repo)] }} </td> <!-- I want this in green if it is up-to-date, otherwise I want it in red -->
</tr>
{% endif %}
{% endfor %}
ありがとうございます。
解決方法は?
の値が正しいかどうかをテストしているのです。
変数
error
と
Already
が存在します。
RepoOutput[RepoName.index(repo)]
. もしこれらの変数が存在しない場合は
未定義オブジェクト
が使用されます。
あなたの
if
と
elif
RepoOutput[RepoName.index(repo)] の値には未定義のオブジェクトは存在しないからです。
をテストしたかったのではないでしょうか? 文字列 が代わりに値に入っています。
{% if "error" in RepoOutput[RepoName.index(repo)] %}
<td id="error"> {{ RepoOutput[RepoName.index(repo)] }} </td>
{% elif "Already" in RepoOutput[RepoName.index(repo)] %}
<td id="good"> {{ RepoOutput[RepoName.index(repo)] }} </td>
{% else %}
<td id="error"> {{ RepoOutput[RepoName.index(repo)] }} </td>
{% endif %}
</tr>
その他、修正したところ。
-
中古
{% elif ... %}
の代わりに{$ elif ... %}
. -
を移動させました。
</tr>
タグをif
条件構造は、常にそこにある必要があります。 -
を引用符で囲みます。
id
属性
を使用したい場合が多いことに注意してください。
class
属性ではなく
id
後者は、HTML文書全体で一意でなければならない値でなければなりません。
個人的には、ここでclassの値を設定し、重複を少し減らす。
{% if "Already" in RepoOutput[RepoName.index(repo)] %}
{% set row_class = "good" %}
{% else %}
{% set row_class = "error" %}
{% endif %}
<td class="{{ row_class }}"> {{ RepoOutput[RepoName.index(repo)] }} </td>
関連
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み] AngularJS テンプレートにおける if else ステートメント
-
[解決済み] jinja2 のテンプレートでリストの長さを取得する
-
[解決済み】Flask/Jinja2を使ってテンプレートにHTMLを渡す
-
[解決済み] if-elif-else文を1行にまとめる?
-
[解決済み】Bashのif, elif, else文の問題点
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python jiabaライブラリの使用方法について説明
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?