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 %}
ありがとう
variableserror
およびAlready
の値がRepoOutput[RepoName.index(repo)]
に存在するかどうかをテストしています。これらの変数が存在しない場合は、 未定義オブジェクト が使用されます。
したがって、if
およびElif
テストは両方とも偽です。 RepoOutput [RepoName.index(repo)]の値に未定義のオブジェクトはありません。
代わりに、特定のstringsが値に含まれているかどうかをテストしたいと思います。
{% 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ドキュメント全体で一意である必要があります。
個人的には、ここでクラスの値を設定し、重複を少し減らします。
{% 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>