Django geliştirme sürümünü kullanarak bir Django yönetici sitesi yapıyorum
Ancak bir CSS stili yok:
Ne yapabilirim?
Teşekkürler
Django geliştirme sürümünü kullanarak bir Django yönetici sitesi yapıyorum
Ancak bir CSS stili yok:
Ne yapabilirim?
Teşekkürler
Yanıtlar:
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.
Kurduktan sonra sizin STATIC_ROOT
ve STATIC_URL
, çalıştırmak gerekebilir
python manage.py collectstatic
STATIC_ROOT
ve 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"
ADMIN_MEDIA_PREFIX
artık kullanımdan kaldırıldı, STATIC_URL
bunun 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.
static/admin
iç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/files
ancak collecstatic onları oraya koymaz. Elbette, klasörü manuel olarak taşımak işe yaramıyor çünkü şablonlar işaret etmeye devam ediyor static/admin
.
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',
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. :(
Gelen /project_name/project_name/settings.py
sete gereken STATIC_URL
statik 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_ROOT
ayarlandığı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:
STATIC_ROOT
içinSTATICFILES_DIRS
listede. Bu, django'daki statik dosya bulucuların tüm statik dosyaları bulmasını sağlar.STATICFILES_DIRS
bu 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 collectstatic
koyduğum yönetici statik dosyalarını kopyaladım STATICFILES_ROOT
. Bu benim için sorunu çözdü.
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.
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.
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ı
Content-Type: text/plain
ve sayfada görüntülenmediğini söylüyor.
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)
Sorunum, proje için yeni Sanal Ortam oluşturarak çözüldü, bundan önce genel sistem düzeyinde python yorumlayıcı kullanıyordum.
$ mkvirtualenv myproject
Referans: https://docs.djangoproject.com/en/2.1/howto/windows/
Ç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!
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/;
}
bu gayet iyi ve kolay çalışıyor. Klasörü (elle) taşıdım. sadece static/admin
ana 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ı
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
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ü.
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
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