django yönetici sitem neden css stiline sahip değil


87

Django geliştirme sürümünü kullanarak bir Django yönetici sitesi yapıyorum

Ancak bir CSS stili yok:

alternatif metin

Ne yapabilirim?

Teşekkürler


2
Yüklenmeyen başvurulan bir stil var mı?
Pekka

1
Dev sunucusunu statik dosyalar sunacak
Adam Vandenberg

1
@Pekka, evet, bu django varsayılan stili, D: \ Python25 \ Lib \ site-packages \ django \
assistant

1
Aynı sorunla ilgili olarak yönetici statik içeriği vieable değil, nginx ile (geliştirme ortamı yerine) yaşadım. Temel olarak, nginx yapılandırma dosyanızı kontrol edin ve 'Collectstatic'inizin konumu olduğundan emin olun. Detaylar burada: serverfault.com/questions/403264/...
Will

Yanıtlar:


14

Django statik dosyaları kendi başına sunmaz. Dosyaların nerede olduğunu ona söylemelisin.

Settings.py içinde ADMIN_MEDIA_PREFIX doğru yerde Django işaret edecektir.

Geliştirme sürümünü kullandığınız için, statik dosyaların nasıl yapılacağı için geliştiriciye özgü belgeyi isteyeceksiniz . Adam'ın bağlantısı sizi 1.2 sürümüne götürecektir.


11
İyi yanıt, ancak artık kullanımdan kaldırıldı ve settings.py'de yok. Daha güncel çözümler için aşağıyı okuyun.
RussellStewart

Aynı hatam var ama Flask'ta css'mi statik klasöre koyuyorum. Ve jinj2 2 suntax yani {{url_for ('static', filename = 'css / style.css')}} kullanın, ancak yine de dizüstü bilgisayarımda bu hatayı görüyorum. Sayfayı yenilemeye zorladım ama sorun hala var. Lütfen yardım edin
Salman Mushtaq

67

Kurduktan sonra sizin STATIC_ROOTve STATIC_URL, çalıştırmak gerekebilir

python manage.py collectstatic

1
Bu, 1.5.2'de de çalışır. Herhangi bir dosya veya kodu değiştirmem veya eklemem
gerekmedi

1
Birisi için Belki yararlı: kullanmalıdır aynı adı için STATIC_ROOTve STATIC_URL, örnek: Ben kombine "Statik Dosyalar" ve "statik" kullanılır, STATIC_ROOT=os.path.join(BASE_DIR, "staticfiles")"ve STATIC_URL="/static/". Uygulamam iyi çalıştı, ancak yönetici dosyaları bulunamadı. böylece onu hem değiştirmek "Statik Dosyalar" veya "statik"
elano7

17

ADMIN_MEDIA_PREFIXartık kullanımdan kaldırıldı, STATIC_URLbunun yerine kullanın. Settings.py STATIC_URL = '/static/'içinde ayar yapılması işi yapmalıdır. Deneyin:

import os.path  import sys

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))

ve sonra:

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'

Django 1.4 pre-alpha SVN-16920 üzerinde çalışır.


1
Bu benim için de çalışmıyor. Klasörü (manuel olarak) static/adminiçinde static/css/taşırsam css dosyalarına erişebileceğimi fark ettim. Görünüşe göre css dosyalarına sadece içinde ise erişebilirim, static/filesancak collecstatic onları oraya koymaz. Elbette, klasörü manuel olarak taşımak işe yaramıyor çünkü şablonlar işaret etmeye devam ediyor static/admin.
toto_tico

Django v1.2 ile oluşturulan, 1.3'te test edilen ve ardından v1.4'te yeniden dağıtılan yönetici arayüzünü çalıştırmaya çalışırken benim için çalıştı. Ubuntu çalıştırılıyor 12.04 LTE
Adam Lewis

9

Django Kitap Eğitimi'nin ardından bu konuyla da karşılaştım. Bölüm 5 | Modeli yükleme bölümünde, kitap varsayılan INSTALLED_APPS'ye atıfta bulunurken - "Önlerine bir karma karakter (#) koyarak bu dizelerin altısını geçici olarak yorumlayın." http://www.djangobook.com/en/2.0/chapter05.html

Daha sonra, 6. Bölümde, Kitap okuyucuya bu 6 satırdan 4 tanesini kaldırmasını söyler - "Bölüm 5'te bu dört INSTALLED_APPS girişini yorumladığımıza dikkat edin. Şimdi bunları açıklamayı kaldırın."

Ancak statcifiles satırı, CSS'yi yönetici sayfasına geri yüklemek için gereken şeydir, bu nedenle 'django.contrib.staticfiles',


Yukarıda önerildiği gibi settings.py dosyasında 'django.contrib.staticfiles' yorumunu kaldırmak benim için de çalıştı. 'django.contrib.staticfiles', INSTALLED_APPS altındaki settings.py dosyanızda varsayılan olarak bulunmalıdır. Öneriniz için teşekkürler Chris.
user2471242

Django Kitabından da buradayım. Bu tek karakter silme işlemi bunu yapıyor.
pbarill

8

Bunu düzeltmeye çalışan birkaç başka konu okudum ... diğer konulardaki gibi bir takma ada başvurdu. Bu, kendi özel uygulamanızın statik dosyaları doğru bir şekilde sunduğunu varsayar ve bu, STATIC_ROOT ve STATIC_URL cihazlarınızın doğru ayarlara sahip olduğunu gösterir.

STATIC_ROOT = ''
STATIC_URL = '/static/'

Sonra (statik dizininizden):

ubuntu@ip-1-2-3-4:/srv/www/mysite.com/app_folder/static$ sudo ln -s /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/ admin

Umarım bu birine yardımcı olur ... Bu konuda çok sayıda konu var. :(


cevap takılar gibi çalışır teşekkürler taylor.well done
Spikie

3

Gelen /project_name/project_name/settings.pysete gereken STATIC_URLstatik dosyalar için kullanmak ne url sitenizi anlatmak için.

Sonra STATIC_ROOT, dosya sisteminizde, listede listelenen dizinlerinizden hiçbiriyle aynı olmayan bir klasör olarak ayarlayın STATICFILES_DIRS.

Bir kez STATICFILES_ROOTayarlandığında, koşarsınpython manage.py collectstatic proje dizininden .

Bu, tüm yönetici statik dosyalarını ve listede listelenen diğer klasörlerdeki tüm dosyaları kopyalayacaktır STATICFILES_DIRS. Temel olarak bu, tüm statik dosyalarınızı tek bir yere koyar, böylece sitenizi dağıtırken bunları CDN'nize taşıyabilirsiniz. Benim gibiyseniz ve bir CDN'niz yoksa, iki seçeneğiniz vardır:

  1. Eğer olarak ayarlanmış Klasör ekle STATIC_ROOTiçinSTATICFILES_DIRS listede. Bu, django'daki statik dosya bulucuların tüm statik dosyaları bulmasını sağlar.
  2. Statik dosyaların tüm klasörünü dosya sisteminizde başka bir yere taşıyın ve STATICFILES_DIRSbu yeni konumu içerecek şekilde yönlendirin .

Bu cevapla güvenlik hakkında yorum yapmıyorum, küçük projeler için web sunucumla geliştirebildiğim gibi. Daha büyük ölçekte bir şey yapıyorsanız, django'nun önerdiği gibi bir CDN isteyeceğinizi umuyorum.

GÜNCELLEME: Bu sorunla karşılaştım ve bu yöntem istediğini düşündüğüm şeyi tam olarak yapmadı. Benim için işe yarayan şey, çalıştırdıktan sonra kendi statik dosyalarım için kullandığım dizine collectstatickoyduğum yönetici statik dosyalarını kopyaladım STATICFILES_ROOT. Bu benim için sorunu çözdü.


3

Diğer cevapların çoğunun yararlı olmasına ek olarak, henüz not edilmemiş bir sorunum vardı. Django 1.3'ten 1.6'ya yükselttikten sonra, statik dosyalar dizinimde django admin statik dosyalarına bozuk bir sembolik bağlantı vardı.

Settings.py şu şekilde yapılandırıldı:

STATICFILES_DIRS = (
    '/var/www/static/my-dev',
)

Bu cevaba göre ,

Django artık yönetici statik dosyalarını URL / admin / altında bulmayı bekleyecektir.

Şu /var/www/static/my-dev/adminşekilde ayarlanmış sembolik bir bağım vardı :

admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/media/

Bu konum artık django 1.6'da mevcut değil, bu yüzden bağlantıyı şu şekilde güncelledim:

admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/

Ve şimdi yönetici sitem düzgün çalışıyor.


2

Django sitenizi barındırmak için Apache sunucusu kullanıyorsanız, statik takma adın / dizininizi / site_media / static / adresini gösterdiğinden emin olmanız gerekir. Statik dosyalarınız site / site / site_media / static / dizininde / dizinindeyse, önceki Apache takma adı yapılandırması çalışmayacaktır.


2

Django öğreticisini takip ederken, benzer bir sorun yaşadım ve benim durumumda sorun, geliştirme sunucusu tarafından css dosyalarını sunarken kullanılan mime tipiydi.

Sunulan mime türü "application / x-css" idi ve Chrome'da aşağıdaki uyarı mesajına yol açtı (Geliştirici araçlarının "Ağ" sekmesinde):

Kaynak Stil Sayfası olarak yorumlandı, ancak MIME türü application / x-css ile aktarıldı: " http://127.0.0.1:8000/static/admin/css/base.css "

Bulduğum geçici çözüm: django webapp's manage.py dosyasına aşağıdaki satırları ekleyerek sunulacak mime türünü değiştirmek:

import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'

Not: Python 2.7 ve Chrome 40.0'da Django 1.7.4 ile benim için çalıştı


bunu Django 2.2.1 ile denedim ve çalışmıyor. Yönetici panelim statik .css dosyalarıma HTTP kodu 200 ile nginx tarafından sunuluyor, ancak Chrome bunların geleceğini Content-Type: text/plainve sayfada görüntülenmediğini söylüyor.
user5359531

2

Django-1.10.5 ve python-2.7.13'te site geliştirirken karşılaştığım türden bir sorun. Ancak firefox-51 ve chrome'umda, giriş sayfası css'i alabildi, ancak yine de stil yoktu. Ama tuhaf bir şekilde IE-8 üzerinde çalışıyordu ..

Burada bahsedilen ve sw sürümlerime uygun olan her şeyi yapmaya çalıştım. Hiçbiri işe yaramadı.

Ama aynı siteyi python-2.7.8'e sahip başka bir sistemde denediğimde işe yaradı ..

Birine yardımcı olabilirse yeni gönderildi ...

düzenlendi: daha sonra python-2.7.13'te settings.py'de aşağıdaki iki satırı yazmanın (ayrıca tarayıcının önbelleğini temizlemenin) hile yaptığını buldum

import mimetypes
mimetypes.add_type("text/css", ".css", True)


1

Bunun ayarlarınızda 'django.contrib.staticfiles'bulunduğundan emin INSTALLED_APPSolun.py


1

Çalıştırmak: python manage.py collectstatic

Bu satırı, /etc/apache2/sites-available/000-default.conf adresinde bulunan Vhost'a ekleyin.

Alias ​​/ static / admin / /var/www/html/example.com/static/admin

İşte django kurulumu için tüm Vhost ayarı

<VirtualHost *:80>
        ServerName gautam.tech
        ServerAlias www.gautam.tech

        WSGIDaemonProcess gautam.tech python-path=/var/www/html/gautam.tech python-home=/var/www/html/gautam.tech/venv
        WSGIProcessGroup gautam.tech
        #Your static files location
        Alias /static /var/www/html/gautam.tech/static
        Alias /media/ /var/www/html/gautam.tech/media
        Alias /static/admin/ /var/www/html/gautam.tech/static/admin

        <Directory /var/www/html/gautam.tech/static>
                Require all granted
        </Directory>

        <Directory /var/www/html/gautam.tech/media>
                       Require all granted
        </Directory>

        WSGIScriptAlias / /var/www/html/gautam.tech/myproject/wsgi.py

        DocumentRoot /var/www/html/gautam.tech
        <Directory /var/www/html/gautam.tech>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

        CustomLog /var/www/html/gautam.tech/access.log combined
        ErrorLog /var/www/html/gautam.tech/error.log
</VirtualHost>

Bu kesinlikle işe yarayacak!


Çok güzel cevap. Sadece Collectstatic komutunu çalıştırmam gerekiyordu.
PowerAktar

1

Sorun geliştirme / test / prod sunucusunda ve Nginx kullanılıyorsa, lütfen aşağıdaki adımları izleyin.

  • settings.py'deki yapılandırmaları aşağıdaki gibi ayarlayın

    STATIC_URL = '/static/'
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    
  • Statik klasörde css ve js dosyaları oluşturmak için aşağıdaki komutu çalıştırın

    $ python manage.py collectstatic
    
  • Statik dosyaları sunmak için / etc / nginx / sites-enabled / example (Nginx) içinde config

    location /static/ {
            alias /project/root/folder/static/;
    }
    

1

bu gayet iyi ve kolay çalışıyor. Klasörü (elle) taşıdım. sadece static/adminana Proje dizininden kopyalayıp public_html'ye yapıştırmanız gerekir, static/eğer statik bir klasör yoksa terminalde aşağıdaki komutu çalıştırmanız gerekir

python manage.py collectstatic

işte Django yöneticisinin css çalışması


0

STATICFILES_DIRS için settings.py'de ayarlanmış bir değeriniz varsa ve bildirilen klasör yoksa veya yanlış konumda ise, bu, Yöneticinin stil vermemesine neden olur, örneğin STATICFILES_DIRS = (os.path.join (BASE_DIR, "statik") )) ve statik klasör mevcut değil


0

Binlerce öneriyi denedikten sonra başarısız oldum, sonunda yardımcı olan bir çözüm buldum. İşte denediğim ve kullandığım şey. Django-1.11 ve nginx web sunucusu kullanıyorum. Öncelikle CSS / js dosyalarımın tarayıcı konsolunda 404 almadığından emin oldum. Ondan sonra bir uyarı görebiliyordum

Kaynak, Stil Sayfası olarak yorumlandı, ancak mime türü metin / düz ile aktarıldı

Base.html dosyasını yönetici şablonlarında buldum ve kaldırdım

type="text/css"

ve şimdi çizgiler şöyle görünüyor:

<link rel="stylesheet"  href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" /> 

Bu benim için sorunu çözdü.


0

Statik dosyaları yapılandırma INSTALLED_APPS'nizedjango.contrib.staticfiles dahil edildiğinden emin olun .

Settings.py dosyanızda STATIC_URL tanımlayın, örneğin:

STATIC_URL = '/static/'

daha fazla ayrıntı için statik dosyalar


0

Yönetici paneli, css yüklenmemiş olması dışında iyi çalışıyordu. Bu , Apache ile Lightsail Django için çalıştı

1. STATIC_ROOT ve STATIC_URL'yi içinde tanımlayın settings.py

STATIC_ROOT = '/opt/bitnami/projects/decisions/decision/'
STATIC_URL = '/static/'

2. Yönetici varlık dosyalarını projeye çıkartın (kopyalayın)

python manage.py collectstatic bu komutu çalıştır /opt/bitnami/projects/decisions/decision/admin, css/ fonts/ img/ js/alt klasörleri olan bir klasör oluşturur

3. / statik url'yi apache'den erişilebilir hale getirin

Bu parçacığı içine yapıştırın /opt/bitnami/apache2/conf/bitnami/bitnami.conf(ssl ayarladıysanız, dosya konumu olacaktır /opt/bitnami/apache2/conf/bitnami/bitnami-ssl.conf)

Alias /static/ "/opt/bitnami/projects/decisions/decision/"
<Directory "/opt/bitnami/projects/decisions/decision/">
    Order allow,deny
    Options Indexes
    Allow from all
    IndexOptions FancyIndexing
</Directory>

4. apache'yi yeniden başlatmayı unutmayın

sudo /opt/bitnami/ctlscript.sh restart apache
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.