Django'da CSS'yi nasıl kullanırım?


110

Uygulamamı Django kullanarak oluşturuyorum ve Django'nun CSS dosyamı kullanmasını nasıl sağlayabileceğimi merak ediyorum. Django'nun css dosyasını görmesini sağlamak için hangi ayarları yapmam gerekiyor?

NB: Yerel bir makinede

Yanıtlar:


48

Geliştirme sunucusunu kullanıyorsanız, URL'lerinizi ayarlamak için django projesinin statik dosyaları yönetmek için nasıl yapılır kılavuzunu izleyin , ardından şablondaki medya dosyalarınızı referans alın - örneğin, bir resim klasörünün içindeki bir görüntü /site_media/images/foo.gif.


25
Bu Django belgeleri hakkında kısa bir not - kullandığınız Django sürümü için belgeleri seçtiğinizden emin olun. Statik dosyalar açısından sürümler arasında işler çok değişmiş gibi görünüyor.
Sam Starling

3
@ Sam harika bir noktaya sahip. Hayatım boyunca statik dosyaları bulamadım. ardından, kurulu django sürümünü değiştirin ve işte. tam anlamıyla tek yapmam gereken buydu çünkü görünüşe göre yanlış sürüm için dokümanlara bakıyordum.
Josh Brown

36

Daha genel olarak ifade etmek gerekirse, Django'dan statik bir dosyanın nasıl sunulacağını soruyorsunuz. Apache altında çalışıyorsanız, http://docs.djangoproject.com/en/dev/howto/deployment/modpython/ okumanız gerekir.

Geliştirme sunucusunu çalıştırıyorsanız (örneğin, dizüstü bilgisayarınızda), http://docs.djangoproject.com/en/dev/howto/static-files/ adresini okuyun.

Django geliştirme sunucusuyla ilgili büyük, büyük feragatnameye dikkat edin :

  • Bu sunucuyu kullanmak verimsiz ve güvensizdir.
  • Bunu bir üretim ortamında kullanmayın.
  • Bunu yalnızca geliştirme için kullanın.

"Bunu bir üretim ortamında kullanmayın." Bunu genişletebilir misin?
Chris

@Chris: Haklısın, ifade biraz belirsizdi. Django geliştirme sunucusundan bahsediyordum. Üretim tesisimizde birkaç kez çalıştırmış olmama rağmen, karmaşık problemlerin hatalarını ayıklarken sadece kısa süreler içindi.
Peter Rowell

Açıklama için teşekkürler, neyi yanlış yaptığımı merak ederek apache üzerinde çalışan django dağıtımlarıma bakıyordum. :)
Chris

1
Güzel. Aynı şeyi farklı şekillerde söyleyen 3 maddeyi seviyorum. Uyarı için teşekkürler.
KobeJohn

13
Bir cevabın yayınlanmasından 4,5 yıl sonra gelen ve onu reddeden insanları kesinlikle seviyorum. Ben bile Django biliyordu acaba oldu 11/08 yılında ... muhtemelen değil. Bana ulaşan temsilci noktaları değil, cehalet ve küstahlığın , partiye geç kalmanın bir ipucu ile gösterilen birleşimi . Yazılarımı comp.lang.c olarak nasıl derecelendireceklerini merak ediyorum, oh diyelim ki 1987? Sormamak daha iyi.
Peter Rowell

13

Bu da bana bir süre sorunlara neden oldu (404 hata bulunamadı). Benim için eksik olan kısım, bunu STATICFILES_DIRSbana vermek için settings.py'deki tuple'ı düzenlemekti :

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('\\','/'),
)

Bu daha sonra CSS dosyalarımı django projemin en üst seviyesinde olan 'media' adlı bir klasörden aldı.

Da sahiptim:

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

( /yukarıdan başladığınızdan emin olun STATIC_URL)

Tabii ki, yukarıda da belirtildiği gibi, CSS dosyasını html dosyalarınızdan düzgün bir şekilde eklemeniz gerekir. Sahiptim:

<link href="{{ STATIC_URL }}css/ea_base.css" rel="stylesheet" type="text/css" media="screen" />

Son olarak, net, basit ve zarif bir çözüm. Django 1.5 ile iyi çalışıyor.
pbarill 13

# Windows'ta bile her zaman eğik çizgi kullanın. .replace('\\','/')gereksizdir.
mak

12

Django'nun css dosyasını görmesini sağlamak için hangi ayarları yapmam gerekiyor?

Yok.

Şablonunuzun CSS dosyasını içerdiğinden (standart HTML'de olduğu gibi) emin olun ve CSS dosyasını medya sunucusuna yerleştirin.

Açıklığa kavuşturmak için: Django ile, tüm medyanızı (dinamik html olmayan her şeyi) farklı bir sunucu örneğinden sunmanız şiddetle tavsiye edilir. Bunu nasıl uygulayacağınız tamamen size bağlıdır, ancak çoğu insan bir alt alan adı oluşturur.


2
Merhaba Oli. Bu gönderinin 3 yıl öncesine yakın olduğunu biliyorum, ancak yine de css'yi django şablonlarına bağlamanın en iyi yolu bu mu? Bu, css'yi static.example.com gibi bir abs URL'sine bağlamanın en kolay yolu gibi görünüyor ve tüm statik dosyaları o url'de depolayın.
cp3


0

Django ile css kullanmanın en kolay yolu, onu şablonlarınıza statik dosyalar olarak eklemektir.

Ama biraz ajax gibi, standart bir şekilde nasıl dahil edileceğini söyleyen hiçbir şey bulamadım.

Boyutunu optimize etmek istiyorsanız, django için bir css-sıkıştırıcı modülü vardır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.