Menulis aplikasi Django pertama anda, bagian 6

Tutorial ini mulai dimana Tutorial 5 ditinggalkan. Kami telah membangun aplikasi jejak pendapat Jaringan dicoba, dan kami akan sekarang menambahkan stylesheet dan sebuah 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".

For small projects, this isn't a big deal, because you can keep the static files somewhere your web server can find it. However, in bigger projects -- especially those comprised of multiple apps -- dealing with the multiple sets of static files provided by each application starts to get tricky.

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:

If you're having trouble going through this tutorial, please head over to the Getting Help section of the 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.

Within the static directory you have just created, create another directory called polls and within that create a file called style.css. In other words, your stylesheet should be at polls/static/polls/style.css. Because of how the AppDirectoriesFinder staticfile finder works, you can refer to this static file in Django as polls/style.css, similar to how you reference the path for templates.

Namespacing berkas statis

Just like templates, we might be able to get away with putting our static files directly in polls/static (rather than creating another polls subdirectory), but it would actually be a bad idea. Django will choose the first static file it finds whose name matches, and if you had a static file with the same name in a different application, Django would be unable to distinguish between them. We need to be able to point Django at the right one, and the best way to ensure this is by namespacing them. That is, by putting those static files inside another directory named for the application itself.

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" type="text/css" 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 subdirektori untuk gambar. Buat sebuah sibdirektori images di direktori polls/static/polls/. Didalam direktori ini, taruh sebuah gambar dipanggil background.gif. Dengan kata lain, taruh gambar anda di polls/static/polls/images/background.gif.

Lalu, tambahkan ke stylesheet anda (polls/static/polls/style.css):

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

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

Peringatan

Tentu saja etiket cetakan {% static %} tidak tersedia untuk digunakan di berkas statis seperti stylesheet anda yang tidak dibangkitkan oleh Django. Anda harus selalu menggunakan jalur relatif untuk menautkan berkas statis diantara satu sama lain, karena anda dapat merubah STATIC_URL (digunakan oleh etiket cetakan static untuk membangkitkan URLnya) tanpa harus merubah sekumpulan jalur di berkas statis anda.

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