2012-01-30 4 views

答えて

1

私はビューでこの平等を決定することをお勧め(詳細はコメントを参照してください)それをコンテキストに渡してテンプレートに戻します。テンプレートでは、myvalueの代わりに変数をテストして何を表示するかを決定します。

+0

残念ながら、私は "AND"条件ではなく、 "OR"条件が必要です。私はあなたのアドバイスをテンプレートの外で平等を判断し、それを下流に渡すつもりです。第一の答えとしてそれを反映するためにあなたのコメントを更新し、私はそれを承認します。 – Huuuze

3

Djangoのテンプレートはsome simple logicをサポートします:

{% if myvalue == 'ABC' or myvalue == 'DEF' %}

注:この機能は、Djangoの1.2で追加されました

+0

運がない。このエラーが表示されます: 'if'文が正しくフォーマットされていません – Huuuze

+0

ええ、これは動作しません。私はDjango 1.1.2を使用しています。https://docs.djangoproject.com/en/1.1/ref/templates/builtins/#if – Huuuze

+0

@Huuuze:新しいスタイルの 'if'テンプレートタグ@Izkataの言及Django 1.2で導入されました。それがあなたのためにはうまくいかない理由です。 1.1.2が少し長くなっているので、アップグレードを検討したいかもしれません。 –

3

django 1.2以降を使用している場合はin operatorを使用できます。それ以外の場合は、django(documentation)で独自のtemplatetagsを使用することができます。

{% load is_member %} 
{% if element is_member_of ["ABC", "DEF"] %} 
    show some stuff 
{% endif %} 

しかし、もしを次のように今、あなたはあなたのテンプレートでtemplatetagを使用することができますフォルダを作成し、アプリ-folerでtemplatetags/is_member.pyを提出し、以下の内容

from django import template 
register = template.Library() 

@register.filter 
def is_member_of(element, list): 
    return element in list 

でファイルを保存します可能な限りFurbeenatorの方法を使用してください。

+0

templatetagsは常に高速でクリーンでスマートなソリューションです – juliomalegria

+0

または[in operator](https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#in-operator) ) –

+0

あなたは正しいですが、in演算子は1.2より前に存在せず、質問はdjango 1.1.2に関するものでした。しかし私は私の答えを編集しました。 – blacklwhite

関連する問題