Bagaimana saya menggunakan CSS di Django?

110

Saya membuat aplikasi saya menggunakan Django, dan bertanya-tanya bagaimana saya dapat membuat Django menggunakan berkas CSS saya? Pengaturan apa yang perlu saya lakukan untuk membuat Django melihat berkas css?

NB: Di komputer lokal

gath
sumber

Jawaban:

48

Jika Anda menggunakan server pengembangan, ikuti panduan cara kerja proyek django untuk mengelola file statis untuk menyiapkan URL Anda, kemudian rujuk file media Anda di templat - misalnya, gambar di dalam folder gambar dari /site_media/images/foo.gif.

Joe
sumber
25
Hanya catatan singkat pada dokumen Django tersebut - pastikan Anda memilih dokumen untuk versi Django yang Anda gunakan. Hal-hal tampaknya telah banyak berubah antar versi sehubungan dengan file statis.
Sam Starling
3
@ Sam memiliki poin yang bagus. saya tidak bisa mengetahui file statis untuk kehidupan saya. kemudian, ubah versi django terinstal, dan voila. hanya itu yang harus saya lakukan karena tampaknya saya melihat dokumen untuk versi yang salah.
Josh Brown
36

Lebih umum lagi, Anda menanyakan bagaimana melayani berkas statis dari Django. Jika Anda menggunakan Apache, Anda harus membaca http://docs.djangoproject.com/en/dev/howto/deployment/modpython/

Jika Anda menjalankan server pengembangan (misalnya, di laptop Anda), baca http://docs.djangoproject.com/en/dev/howto/static-files/

Catatlah pelepasan tanggung jawab besar dan besar mengenai server pengembangan Django:

  • Menggunakan server ini tidak efisien dan tidak aman.
  • Jangan gunakan ini dalam pengaturan produksi.
  • Gunakan ini hanya untuk pengembangan.
Peter Rowell
sumber
"Jangan gunakan ini dalam pengaturan produksi." Apakah Anda keberatan mengembangkan ini?
Chris
@ Chris: Anda benar, pernyataan itu agak ambigu. Saya merujuk ke server pengembangan Django. Meskipun saya telah menjalankannya beberapa kali di situs produksi kami, itu hanya untuk waktu yang singkat saat men-debug masalah yang rumit.
Peter Rowell
Terima kasih untuk klarifikasi, saya melihat penerapan django saya berjalan di apache sambil bertanya-tanya apa yang saya lakukan salah. :)
Chris
1
Bagus. Saya suka 3 item yang mengatakan hal yang sama dengan cara berbeda. Terima kasih atas peringatannya.
KobeJohn
13
Saya sangat menyukai orang-orang yang datang 4,5 tahun setelah sebuah jawaban diposting dan menolaknya. Aku ingin tahu apakah mereka bahkan tahu apa Django adalah di 11/08 ... mungkin tidak. Itu bukan poin rep yang sampai ke saya, itu kombinasi ditampilkan kebodohan dan kesombongan dengan hanya sedikit menjadi waaay terlambat ke pesta. Saya ingin tahu bagaimana mereka akan menilai posting saya ke comp.lang.c di, oh katakanlah, 1987? Lebih baik tidak bertanya.
Peter Rowell
13

Ini menyebabkan saya masalah juga untuk sementara waktu (404 kesalahan tidak ditemukan). Bagian yang hilang bagi saya adalah mengedit STATICFILES_DIRStupel di settings.py untuk memberi saya ini:

STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(os.path.dirname(__file__),'media').replace('\\','/'),
)

Ini kemudian mengambil file CSS saya di folder bernama 'media' yang berada di level teratas proyek django saya.

Saya juga punya:

MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/media/'

(pastikan Anda memiliki yang terdepan /di atas STATIC_URL)

Tentu saja, seperti yang dikatakan di atas, Anda harus memiliki file CSS yang disertakan dengan benar dari file html Anda. Saya punya:

<link href="{{ STATIC_URL }}css/ea_base.css" rel="stylesheet" type="text/css" media="screen" />
jacanterbury
sumber
Akhirnya, solusi yang jelas, sederhana dan elegan. Bekerja dengan baik dengan django 1.5.
pbarill
# Selalu gunakan garis miring ke depan, bahkan di Windows. .replace('\\','/')tidak perlu.
mak
12

Pengaturan apa yang perlu saya lakukan untuk membuat Django melihat berkas css?

Tidak ada.

Pastikan template Anda menyertakan file CSS (seperti HTML standar) dan letakkan file CSS di server media.

Untuk memperjelas: Dengan Django sangat disarankan anda melayani semua media anda (segala sesuatu yang bukan html dinamis) dari contoh server yang berbeda. Bagaimana Anda menerapkannya sepenuhnya terserah Anda, tetapi kebanyakan orang membuat subdomain.

Oli
sumber
2
Hai, Oli. Saya tahu posting ini hampir berumur 3 tahun, tetapi apakah ini masih cara terbaik untuk menghubungkan css ke template django? Sepertinya ini akan menjadi yang termudah hanya dengan menautkan css ke URL abs seperti static.example.com dan hanya menyimpan semua file statis di url itu.
cp3
0

Cara termudah untuk menggunakan css dengan django, adalah menambahkannya ke template Anda sebagai file-statis.

Tapi ini agak seperti ajax, saya tidak menemukan apa pun yang memberi tahu cara memasukkannya dengan cara standar.

Ada modul kompresor css untuk django jika Anda ingin mengoptimalkan ukurannya.

Roch
sumber