1. ホーム
  2. python

[解決済み] django のテンプレートで "none" に相当するものは何ですか?

2022-08-13 23:17:46

質問

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 %}

ヒントです。ロジックはモデルに任せ、テンプレートはプレゼンテーション層のみに限定し、モデルで計算するようにしましょう。例を挙げます。

# 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 }}

これが役に立つといいのですが :)