Mengelola berkas statis (sebagai contoh gambar, JavaScript, CSS)Link to this heading
Situs jaringan pada umumnya butuh melayani tambahan berkas-berkas seperti gambar, JavaScript, atau CSS. Di Django, kami mengacu pada berkas-berkas ini sebagai "berkas-berkas tetap". Django menyediakan django.contrib.staticfiles untuk membantu anda mengelola mereka.
Halaman ini menggambarkan bagaimana anda dapat melayani berkas statis ini.
Mengkonfigurasi berkas-berkas tetapLink to this heading
Pastikan bahwa
django.contrib.staticfilesdisertakan dalamINSTALLED_APPSanda.Di berkas pengaturan anda, tentukan
STATIC_URL, sebagai contoh:STATIC_URL = '/static/'Di cetakan anda, salah satu kode keras url seperti
/static/my_app/example.jpgatau, lebih disukai, gunakan etiket cetakanstaticuntuk membangun URL untuk jalur relatif yang diberikan dengan menggunakan penyimpananSTATICFILES_STORAGEyang dikonfigurasikan (ini membuat lebih mudah ketika anda ingin mengganti ke content delivery network (CDN) untuk melayani berkas tetap).{% load static %} <img src="{% static "my_app/example.jpg" %}" alt="My image"/>Simpan berkas tetap di pelipat disebut
staticdi aplikasi anda. Sebagai contohmy_app/static/my_app/example.jpg.
Proyek anda mungkin juga mempunyai aset tetap yang tidak diikat pada aplikasi khusus. Dalam tambahan untuk menggunakan direktori static/ didalam aplikasi anda, anda dapat menentukan sebuah daftar direktori (STATICFILES_DIRS) di berkas pengaturan anda dimana Django akan juga mencari untuk berkas-berkas tetap. Sebagai contoh:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
'/var/www/static/',
]
Lihat dokumentasi untuk pengaturan STATICFILES_FINDERS untuk rincian pada bagaimana staticfiles menemukan berkas-berkas anda.
Melayani berkas-berkas tetap selama pengembanganLink to this heading
Jika anda menggunakan django.contrib.staticfiles seperti yang dijelaskan diatas, runserver akan melakukan ini secara otomatis ketika DEBUG disetel ke True. Jika anda tidak mempunyai django.contrib.staticfiles di INSTALLED_APPS, anda dapat masih secara manual melayani berkas-berkas tetap menggunakan tampilan django.contrib.staticfiles.views.serve().
Ini tidak cocok untuk penggunaan produksi! Untuk beberapa strategi penyebaran umum, lihat menyebarkan berkas tetap.
Sebagai contoh, jika STATIC_URL anda ditentukan sebagai /static/, anda dapat melakukan ini dengan menambahkan potongan berikut ke urls.py anda:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Melayani berkas-berkas terunggah oleh pengguna selama pengembanganLink to this heading
Selama pengembangan, anda dapat melayani berkas-berkas media diupload-pengguna dari MEDIA_ROOT menggunakan tampilan django.contrib.staticfiles.views.serve().
Ini tidak cocok untuk penggunaan produksi! Untuk beberapa strategi penyebaran umum, lihat menyebarkan berkas tetap.
Sebagai contoh, jika MEDIA_URL anda ditentukan sebagai /media/, anda dapat melakukan ini dengan menambahkan potongan berikut ke urls.py anda:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
PengujianLink to this heading
Ketika menjalankan percobaan yang menggunakan permintaan HTTP sebenarnya daripada klien percobaan siap pakai (yaitu ketika menggunakan LiveServerTestCase siap pakai) aset tetap butuh dilayani bersama sisa dari isi sehingga lingkungan percobaan memproduksi kembali satu yang asli setepat mungkin, tetapi LiveServerTestCase mempunyai hanya sangat dasar berkas tetap-melayani fungsi: Dia tidak tahu bahwa penemu fitur dari aplikasi staticfiles dan menganggap isi statis telah dikumpulkan dibawah STATIC_ROOT.
Karena ini, staticfiles mengemas django.contrib.staticfiles.testing.StaticLiveServerTestCase milik dia sendiri, sebuah subkelas dari satu siap pakai yang mempunyai kemampuan untuk transparan melayani semua aset selama pelaksanaan dari percobaan ini dengan cara sangat mirip pada apa kami dapat di waktu pengembangan dengan DEBUG = True, yaitu tanpa mengumpulkan mereka menggunakan collectstatic pertama kali.
PenyebaranLink to this heading
django.contrib.staticfiles menyediakan kenyamanan perintah pengelolaan untuk mengumpulkan berkas-berkas tetap dalam direktori tunggal sehingga anda dapat melayani mereka dengan mudah.
Setel pengaturan
STATIC_ROOTke direktori dari dimana anda ingin melayani berkas-berkas ini, sebagai contoh:STATIC_ROOT = "/var/www/example.com/static/"Jalankan perintah pengelolaan
collectstatic:$ python manage.py collectstaticIni akan menyalin semua berkas dari pelipat tetap anda kedalam direktori
STATIC_ROOT.Gunakan sebuah peladen jaringan dari pilihan anda untuk melayani berkas-berkas. menyebarkan berkas tetap melingkupi beberapa strategi penyebaran umum untuk berkas-berkas tetap.
Pelajari lagiLink to this heading
Dokumen ini melingkupi corak penggunaan dasar dan beberapa umum. Untuk melengkapi rincian pada semua pengaturan, perintah, etiket cetakan, dan potongan lainnya disertakan dalam django.contrib.staticfiles, lihat the acuan berkas tetap.