フィールド/変数がDjangoテンプレート内にないかどうかを見たいです。そのための正しい構文は何ですか?
これは私が現在持っているものです:
{% if profile.user.first_name is null %}
<p> -- </p>
{% Elif %}
{{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif%}
上記の例では、「null」を置き換えるために何を使用しますか?
None, False and True
はすべて、テンプレートタグとフィルター内で使用できます。 None, False
、空の文字列('', "", """"""
)および空のリスト/タプルはすべて、False
によって評価されるときにif
に評価されるため、簡単に実行できます。
{% if profile.user.first_name == None %}
{% if not profile.user.first_name %}
ヒント:@fabiocerqueiraは正しいです。ロジックをモデルに任せ、テンプレートを唯一のプレゼンテーションレイヤーに制限し、モデルのようなものを計算します。例:
# someapp/models.py
class UserProfile(models.Model):
user = models.OneToOneField('auth.User')
# other fields
def get_full_name(self):
if not self.user.first_name:
return
return ' '.join([self.user.first_name, self.user.last_name])
# template
{{ user.get_profile.get_full_name }}
お役に立てれば :)
別の組み込みテンプレートdefault_if_none
を使用することもできます
{{ profile.user.first_name|default_if_none:"--" }}
is
operator:Django 1.10の新機能
{% if somevar is None %}
This appears if somevar is None, or if somevar is not found in the context.
{% endif %}
組み込みテンプレートフィルターdefault
を使用することもできます。
値がFalseと評価された場合(例:None、空の文字列、0、False);デフォルトの「-」が表示されます。
{{ profile.user.first_name|default:"--" }}
ドキュメント: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
{% if profile.user.first_name %}
は機能します(''
も受け入れたくないと仮定します)。
if
in Pythonは、一般的にNone
、False
、''
、[]
、{}
、... allを扱います。偽として。
この「if」を行う必要はありません。{{ profile.user.get_full_name }}
を使用します