2012-09-27 14 views
8

私は2つの変数 "test"を持つ{{ profile }}と "test"という値を持つ{{ element.author }}を持っているとします。 jinja2では、ifを使って比較しようとすると、何も表示されません。私は次のような比較を行います。は2つの変数をjinja2テンプレートと比較します

{% 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いただきました間違って、どのように私は比較することができますを取得しますか?

+0

{{[profile、element.author]}} – defuz

+0

の値を入力してください。この式は変数の表現を取るべきです。 – defuz

答えて

2

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

+1

私はちょっと文字列の比較をしたい、それを行う方法? – user1629366

+0

多分: 'str(profile)== str(element.author)'?あなたのデータとコードに関するすべてのタイプやその他のことを知らなくても、私は言うことができません。 – mjibson

1

jinja2が利用できる多くのbuilt in testsのいずれかを使用して、変数のタイプをチェックすることができます。例えば、string()またはnumber()です。私は同じ問題を抱えていて、それがそのタイプであることに気付きました。

8

私は同じ問題を抱えています。整数値を持つ2つの変数は、同じ値のときに同じではありません。

この方法を使用する方法はありますか。 また、str()== str()またはint()== int()を使用しようとしましたが、常に未定義のエラーがあります。

UPDATE

見つかりソリューション: は、単に、そのようなことはここhttp://jinja.pocoo.org/docs/dev/templates/#list-of-builtin-filters

あなたのケースでは、あなたが望む見つけることができるドキュメントを読む{{ var|string() }}{{ var|int() }} https://stackoverflow.com/a/19993378/1232796

としてフィルタを使用します行うこと

{% if profile|string() == element.author|string() %} 
{{ profile }} and {{ element.author }} are same 
{% else %} 
{{ profile }} and {{ element.author }} are **not** same 
{% endif %} 
関連する問題