Ich möchte sehen, ob ein Feld/eine Variable in einer Django Vorlage nicht vorhanden ist. Was ist die richtige Syntax dafür?
Das habe ich aktuell:
{% if profile.user.first_name is null %}
<p> -- </p>
{% Elif %}
{{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif%}
Was würde ich im obigen Beispiel verwenden, um "null" zu ersetzen?
None, False and True
Alle sind in Vorlagen-Tags und Filtern verfügbar. None, False
, die leere Zeichenfolge ('', "", """"""
) und leere Listen/Tupel werden alle zu False
ausgewertet, wenn sie von if
ausgewertet werden
{% if profile.user.first_name == None %}
{% if not profile.user.first_name %}
Ein Tipp: @fabiocerqueira ist richtig, überlassen Sie die Logik den Modellen, beschränken Sie die Vorlagen auf die einzige Präsentationsebene und berechnen Sie solche Dinge in Ihrem Modell. Ein Beispiel:
# 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 }}
Hoffe das hilft :)
Sie können auch eine andere integrierte Vorlage verwenden default_if_none
{{ profile.user.first_name|default_if_none:"--" }}
is
operator: Neu in Django 1.10
{% if somevar is None %}
This appears if somevar is None, or if somevar is not found in the context.
{% endif %}
Sie können auch den integrierten Vorlagenfilter default
verwenden:
Wenn der Wert False ergibt (z. B. None, eine leere Zeichenfolge, 0, False); Die Standardeinstellung "-" wird angezeigt.
{{ profile.user.first_name|default:"--" }}
Dokumentation: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
{% if profile.user.first_name %}
Funktioniert (vorausgesetzt, Sie möchten auch ''
Nicht akzeptieren).
if
in Python im Allgemeinen behandelt None
, False
, ''
, []
, {}
, ... alles als falsch.
Sie müssen dies nicht tun, wenn, verwenden Sie: {{ profile.user.get_full_name }}