web-dev-qa-db-ja.com

jinja2テンプレートの2つの変数を比較する

2つの変数{{ profile }}値 "test"および{{ element.author }}値「test」で再度。 jinja2では、ifを使用してそれらを比較しようとすると、何も表示されません。私は次のように比較を行います:

{% if profile == element.author %}
{{ profile }} and {{ element.author }} are same
{% else %}
{{ profile }} and {{ element.author }} are **not** same
{% endif %}

出力を取得しますtest and test are not same何が問題なのですか、どうすれば比較できますか?

11
user1629366

私は同じ問題を抱えています。整数値を持つ2つの変数が同じ値である場合、それらは等しくありません。

これを何らかの方法で機能させる方法はありますか?また、str()== str()またはint()== int()を使用しようとしましたが、常に未定義のエラーがあります。

[〜#〜]更新[〜#〜]

見つかった解決策:{{ var|string() }}または{{ var|int() }}などのフィルタを使用するだけ https:// stackoverflow .com/a/19993378/1232796

ドキュメンテーションを読むそれはここにあります http://jinja.pocoo.org/docs/dev/templates/#list-of-builtin-filters

あなたの場合あなたがしたいでしょう

{% if profile|string() == element.author|string() %}
{{ profile }} and {{ element.author }} are same
{% else %}
{{ profile }} and {{ element.author }} are **not** same
{% endif %}
16
tgdn

profileおよびelement.authorは同じ型ではないか、等しくありません。ただし、文字列に変換すると、同じ値が出力されることがあります。それらを正しく比較するか、それらのタイプを同じになるように変更する必要があります。

2
mjibson

Jinja2が利用できる多くの テストに組み込まれています の1つを使用して、変数のタイプを確認できます。たとえば、string()またはnumber()です。私は同じ問題を抱えていて、それがタイプだと気づきました。

1
mazzi