None, False and True
wszystkie są dostępne w ramach tagów szablonów i filtrów. None, False
, puste string ( '', "", """"""
) i puste listy / krotki są obliczane do False
kiedy są oceniane przez if
, więc możesz to łatwo zrobić
{% if profile.user.first_name == None %}
{% if not profile.user.first_name %}
Wskazówka: @fabiocerqueira ma rację, pozostaw logikę modelom, ogranicz szablony do jedynej warstwy prezentacji i obliczaj takie rzeczy w swoim modelu. Przykład:
# 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 }}
Mam nadzieję że to pomoże :)
{% if profile.user.first_name is None %}
powoduje błąd składni w szablonie Django.default_if_none
filtru w szablonie?Możesz także użyć innego wbudowanego szablonu
default_if_none
źródło
date
. Jeśli wystąpi jakikolwiek błąd, zwróci None. Następnie aplikujeszdefault_if_none
.is
operator: Nowość w Django 1.10źródło
Spójrz na pomocnika yesno
Na przykład:
źródło
{% if profile.user.first_name %}
działa (zakładając, że też nie chcesz zaakceptować''
).if
w Pythonie na ogół traktujeNone
,False
,''
,[]
,{}
, ... wszystko jako fałszywe.źródło
Możesz także użyć wbudowanego filtru szablonów
default
:Jeśli wartość ma wartość False (np. None, pusty ciąg, 0, False); wyświetlany jest domyślny „-”.
Dokumentacja: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
źródło
Możesz spróbować tego:
W ten sposób zasadniczo sprawdzasz, czy pole formularza
first_name
ma skojarzoną z nim wartość. Zobacz{{ field.value }}
w Pętle nad polami formularza w dokumentacji Django .Używam Django 3.0.
źródło