Menulis aplikasi Django pertama anda, bagian 6

Tutorial ini memulai dimana Tutorial 5 ditinggalkan. Kami telah membangun sebuah aplikasi poling jaringan, dan kami akan menambahkan lembar gaya dan gambar.

Disamping dari HTML dibangkitkan oleh peladen, aplikasi jaringan umumnya butuh melayani berkas-berkas tambahan - seperti gambar, JavaScript, atau CSS - perlu untuk membangun halaman jaringan lengkap. Di Django, kami mengacu pada berkas-berkas ini sebagai "berkas statis".

Untuk proyek kecil, ini bukan urusan yang besar, karena anda dapat menyimpan berkas statis disuatu tempat peladen jaringan anda dapat menemukan itu. Bagaimanapun, dalam proyek terbesar, -- khususnya yang terdiri dari aplikasi - aplikasi banyak -- berhubungan dengan banyak kumpulan dari berkas statis disediakan oleh setiap aplikasi mulai menjadi rumit.

Itulah django.contrib.staticfiles diperuntukkan: dia mengumpulkan berkas statis dari setiap aplikasi anda (dan tempat lain apapun anda tentukan) kedalam tempat tunggal yang dapat dengan mudah dilayani di produksi.

Dimana mendapatkan bantuan:

Jika anda memiliki masalah melalui tutorial ini, harap geser ke Getting Help bagian dari FAQ.

Sesuaikan aplikasi anda penampilan dan perasaan

Pertama, buat sebuah direktori dipanggil static di direktori polls anda. Django akan mencari berkas statis disana, sama halnya bagaimana Django menemukan cetakan didalam polls/templates/.

Pengaturan Django STATICFILES_FINDERS mengandung daftar dari penemu yang mengetahui bagaimana menemukan berkas statis dari beragam sumber. Satu dari awalnya adalah AppDirectoriesFinder yang mencari subdirektori "statis" di setiap dari INSTALLED_APPS, seperti satu di polls kami telah buat. Situs admin menggunakan struktur direktori sama untuk berkas statis nya.

Dalam direktori static anda telah buat, buat direktori lain dipanggil polls dan dalam itu buat sebuah berkas dipanggil style.css. Dengan kata lain, gaya kertas anda harus di polls/static/polls/style.css. karena bagaimana pencari berkas statis AppDirectoriesFinder bekerja, anda dapat mengacu ke berkas statis ini dalam Django sebagai polls/style.css, mirip bgaimana anda mengacukan jalur untuk cetakan.

Namespacing berkas statis

Sama seperti cetakan, kita * mungkin * bisa lolos dengan meletakkan file statis kita secara langsung dalam polls/static (daripada membuat subdirektori polls lain), tetapi itu sebenarnya adalah ide buruk. Django akan memmilih berkas statis pertama dia temukan yang namanya cocok, dan jika anda memiliki berkas statis dengan nama sama dalam aplikasi berbeda, Django tidak dapat membedakan diantara mereka. Kami butuh dapat menunjuk Django pada satu yang benar, dan cara terbaik untuk memastikan ini adalah dengan namespace. Yaitu, dengan menaruh berkas-berkas statis itu didalam direktori lain dinamai untuk aplikasi itu sendiri.

Taruh kode berikut di stylesheet itu (polls/static/polls/style.css):

polls/static/polls/style.css
li a {
    color: green;
}

Selanjutnya, tambahkan berikut pada atas polls/templates/polls/index.html:

polls/templates/polls/index.html
{% load static %}

<link rel="stylesheet" href="{% static 'polls/style.css' %}">

Etiket cetakan {% static %} membagnkitkan URL mutlak dari berkas-berkas tetap.

Itu semua yang anda butuhkan untuk pengembangan.

Mulai peladen (atau mulai kembali jika sudah berjalan):

$ python manage.py runserver
...\> py manage.py runserver

Memuat kembali http://localhost:8000/polls/ dan anda harus melihat bahwa tautan pertanyaan adalah hijau (gaya Django!) yang berarti bahwa lembar gaya anda dengan benar dimuat.

Menambahkan gambar-latar belakang

Selanjutnya, kami akan membuat sebuah sub direktori untuk gambar. Buat sebuah sub direktori images dalam direktori polls/static/polls/. Didalam direktori ini, tambah berkas gambar apapun yang akan anda gunakan sebagai latar belakang. Untuk tujuan panduan ini, kami menggunakan berkas yang dinamai background.png, yang mempunyai jalur penuh polls/static/polls/images/background.png.

Kemudian, tambah sebuah acuan ke gambar anda dalam lembar gaya (polls/static/polls/style.css):

polls/static/polls/style.css
body {
    background: white url("images/background.png") no-repeat;
}

Muat kembali http://localhost:8000/polls/ dan anda harus melihat latar belakang dimuat di kiri atas dari layar.

Peringatan

Etiket cetakan``{% static %}`` tidak tersedia untuk digunakan dalam berkas tetap yang tidak dibangkitkan oleh Django, seperti lembar gaya anda. Anda harus selalu menggunakan relative paths untuk mengkaitkan berkas tetap anda diantara satu sama lain, karena kemudian anda dapat merubah STATIC_URL (digunakan oleh etiket cetakan static untuk membangkitkanURL nya) tanpa harus merubah sekelompok jalur dalam berkas tetap anda juga.

Ini adalah dasar. Untuk lebih rinci di pengaturan dan lainnya disertakan dengan kerangka lihat bagaimana berkas statis dan acuan berkas statis. Menyebarkan berkas statis mengobrolkan bagaimana menggunakan berkas statis di peladen sebenarnya.

Ketika anda nyaman dengan berkas statis, baca bagian 7 dari tutorial ini untuk belajar bagaimana menyesuaikan pembangkitan-otomatis Django situs admin.

Back to Top