Bagaimana cara membuat variabel dalam jijna2 default ke "" jika objeknya adalah Tidak ada daripada melakukan sesuatu seperti ini?
{% if p %}
{{ p.User['first_name']}}
{% else %}
NONE
{%endif %}
Jadi, jika objek p adalah Tidak Ada Saya ingin default nilai p (first_name dan last_name) menjadi "". Pada dasarnya
nvl(p.User[first_name'], "")
Kesalahan menerima:
Error: jinja2.exceptions.UndefinedError
UndefinedError: 'None' has no attribute 'User'
p
tidak pernah kembaliNone
. Alih-alihNone
fungsi harus mengembalikan objek proxy yang memiliki struktur yang sama dengan objek nyata tetapi dimuat dengan nilai-nilai default yang Anda inginkan.Jawaban:
Gunakan
none
fungsi builtin ( http://jinja.pocoo.org/docs/templates/#none ):atau
atau jika Anda membutuhkan string kosong:
sumber
none
dalam jawabannya. Masalah saya terpecahkan setelah saya memperbaiki kasus None.sumber
Menurut dokumen yang bisa Anda lakukan:
Menyebabkan
None
gipsFalse
dalam konteks boolean.Pembaruan : Seperti yang disebutkan lindes, ini hanya berfungsi untuk tipe data sederhana.
sumber
default
apa yang saya butuhkan untuk kasus khusus saya, jadi ... hanya tidak memilih. (Hasil edit untuk jawaban ini mungkin dapat membuatnya mendapat upvote, kecuali bahwa saya pikir ini mungkin sulit diterapkandefault
pada situasi ini)Sebagai tambahan untuk jawaban lain, seseorang dapat menulis sesuatu yang lain jika variabelnya adalah Tidak seperti ini:
sumber
x or y
adalahif x is false, then y, else x
. Lihat: 5.2. Operasi Boolean - dan, atau, tidakDengan mengikuti dokumen ini, Anda dapat melakukannya dengan cara ini:
sumber
Untuk menghindari melemparkan pengecualian saat "p" atau "p.Pengguna" adalah Tidak Ada, Anda dapat menggunakan:
sumber
Sebagai solusi lain (agak mirip dengan yang sebelumnya):
Perhatikan variabel terakhir (p.Pengguna ['first_name']) tidak memiliki
if defined
tes setelah itu.sumber
Saya biasanya mendefinisikan suatu
nvl
fungsi, dan memasukkannya ke dalamglobals
danfilters
.Penggunaan dalam templat:
sumber
Pada An 2.8, Anda bisa menggunakan:
Lihat https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.8.html#jinja-undefined-values
sumber