Bagian terpenting dari pertanyaan itu ada di topik.
Saya bertanya-tanya tag apa yang terbaik untuk kasus mana. Selain itu ... Saya menemukan kode, yang juga digunakan settings.STATIC_URL
termasuk {{STATIC_URL}}
dalam template.
Saya sedikit bingung.
django
django-templates
trikoder_beta
sumber
sumber
Jawaban:
Built-in The
static
tag template "link [s] untuk file statis yang disimpan dalamSTATIC_ROOT
".The
staticfiles
contrib aplikasistatic
tag template "menggunakan dikonfigurasiSTATICFILES_STORAGE
penyimpanan untuk membuat URL lengkap untuk path relatif diberikan", yang "sangat berguna ketika menggunakan backend penyimpanan non-lokal untuk menyebarkan file".Built-in
static
dokumentasi Template tag (terkait di atas) memiliki catatan yang mengatakan untuk menggunakanstaticfiles
contrib aplikasistatic
tag template "jika Anda memiliki kasus penggunaan canggih seperti menggunakan layanan cloud untuk melayani file statis", dan memberikan contoh ini melakukannya:{% load static from staticfiles %} <img src="{% static "images/hi.jpg" %}" alt="Hi!" />
Anda dapat menggunakan
{% load staticfiles %}
daripada{% load static from staticfiles %}
jika Anda mau, tetapi yang terakhir lebih eksplisit.sumber
{% load static %}
. "Di versi lama, Anda harus menggunakan{% load static from staticfiles %}
template Anda untuk menyajikan file dari penyimpanan yang ditentukan di STATICFILES_STORAGE. Ini tidak lagi diperlukan."{% load static %}
.Saya tidak tahu apa perbedaannya, tetapi saya menemukan perbedaan use case (menggunakan django 1.9.1 yang dijalankan melalui apache, wsgi pada Python 3.4). Di aplikasi saya, saya memiliki beberapa gambar di
ImageFields
database. Jika saya menggunakan kode seperti ini di template saya:<a href="object-{{object.id}}"><img src="{% static object.image %}" height="200px"></a>
lalu, jika saya menggunakan
{% load static %}
, django melemparTypeError
(Cannot mix str and non-str arguments
). Ini mungkin karenaobject.image
bukan string, ini adalahImageField
, yang akan diubah menjadi string pada tahap selanjutnya. Namun, jika salah menggunakan{% load staticfiles %}
tidak terjadi kesalahan seperti itu.Sayangnya, saya menemukan perbedaan ini setelah menghabiskan berjam-jam mencoba men-debug masalah. Saya berhasil menemukan solusi ketika menggunakan opsi pertama, yaitu menambahkan metode konverter string ke objek seperti ini:
#image string def image_str(self): return str(self.image)
Semoga ilmu ini berguna bagi seseorang.
sumber
Dokumentasi Django lebih disukai sekarang
{% load static %}
.{% load staticfiles %}
berfungsi tapi saya pikir itu sudah usang.https://docs.djangoproject.com/en/dev/ref/templates/builtins/#static
sumber
Lihat dokumen , di mana ada penjelasan yang bagus tentang itu. Sebenarnya
{% static %}
tag template mengetahui lokasi STATICFILE_STORAGESeperti yang dikatakan dokumen:
Semoga membantu !!
sumber
{% load static %}
,{% load staticfiles %}
,{{STATIC_URL}}
... dan tahu aku tidak tahu apa perbedaan antara{% load static %}
dan{% load static from staticfiles %}
{% load staticfiles %}
sangat membantu saat Anda menggunakan penyimpanan yang berbeda seperti S3, kemudian akan diubah menjadi URL S3sumber