Pertanyaan Mengakses template Django {{Variabel}} dari JavaScript


Saya mencoba mengakses variabel template django di halaman html inline javascript, ini berfungsi dengan baik. Tetapi jika saya termasuk js menggunakan <script src="..> Maka itu tidak berhasil. Apakah batasan ini atau saya melakukan sesuatu yang salah? Saya sangat menghargai bantuan Anda.


10
2017-07-27 03:33


asal


Jawaban:


Javascript yang disertakan tidak diproses oleh prosesor template Django di server, jadi itu tidak akan berfungsi. Jika Anda perlu memberikan informasi melalui template ke file Javascript yang disertakan, buat template Anda menjadi kecil <script> blok dimana beberapa variabel global dinyatakan mengandung variabel-variabel template. Kemudian, file Javascript murni Anda bisa mendapatkan nilai dengan mencari objek global yang dibuat oleh itu <script> dari template.


12
2017-07-27 03:35



Jawaban Pointy benar. Saya sering menemukan filter ini berguna untuk situasi itu:

@register.filter(name='json')
def _json(obj):
  #remember to make sure the contents are actually safe before you use this filter!
  return safestring.mark_safe(json.dumps(obj)) 

kemudian di <script> tag saya hanya bisa melakukan sesuatu seperti ini:

window.g_details = {{ details|json }};

5
2017-07-27 03:39