None, False and True
semua tersedia dalam tag dan filter template. None, False
, string kosong ( '', "", """"""
) dan daftar kosong / tupel semuanya dievaluasi False
ketika dievaluasi oleh if
, sehingga Anda dapat melakukannya dengan mudah
{% if profile.user.first_name == None %}
{% if not profile.user.first_name %}
Petunjuk: @fabiocerqueira benar, serahkan logika pada model, batasi template untuk menjadi satu-satunya lapisan presentasi dan hitung hal-hal seperti itu dalam model Anda. Sebuah contoh:
# 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 }}
Semoga ini membantu :)
{% if profile.user.first_name is None %}
menyebabkan kesalahan sintaks pada cetakan Django.default_if_none
filter di template?Anda juga dapat menggunakan templat bawaan lainnya
default_if_none
sumber
date
terlebih dahulu. Jika terjadi kesalahan, itu akan mengembalikan Tidak ada. Kemudian Anda melamardefault_if_none
.is
operator: Baru di Django 1.10sumber
Lihatlah pembantu yesno
Misalnya:
sumber
{% if profile.user.first_name %}
bekerja (dengan asumsi Anda juga tidak ingin menerima''
).if
Python di memperlakukan umumNone
,False
,''
,[]
,{}
, ... semua sebagai palsu.sumber
Anda juga dapat menggunakan filter template bawaan
default
:Jika nilai terevaluasi menjadi False (misalnya Tidak Ada, string kosong, 0, Salah); default "-" ditampilkan.
Dokumentasi: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
sumber
Anda bisa mencoba ini:
Dengan cara ini, Anda pada dasarnya memeriksa untuk melihat apakah bidang formulir
first_name
memiliki nilai yang terkait dengannya. Lihat{{ field.value }}
dalam Perulangan pada bidang formulir di Dokumentasi Django .Saya menggunakan Django 3.0.
sumber