Stronę administracyjną tworzę za pomocą wersji rozwojowej Django
Ale nie ma stylu CSS:
co mogę zrobić?
dzięki
Stronę administracyjną tworzę za pomocą wersji rozwojowej Django
Ale nie ma stylu CSS:
co mogę zrobić?
dzięki
Odpowiedzi:
Django nie obsługuje samodzielnie plików statycznych. Musisz mu powiedzieć, gdzie są pliki.
ADMIN_MEDIA_PREFIX w settings.py wskaże Django we właściwym miejscu.
Ponieważ używasz wersji rozwojowej, będziesz potrzebować dokumentu specyficznego dla deweloperów dla plików statycznych, jak to zrobić . Odnośnik Adama prowadzi do wersji 1.2.
Po skonfigurowaniu STATIC_ROOT
i STATIC_URL
może być konieczne uruchomienie
python manage.py collectstatic
STATIC_ROOT
i STATIC_URL
, na przykład: połączyłem „staticfiles” i „static” , użyłem STATIC_ROOT=os.path.join(BASE_DIR, "staticfiles")"
i STATIC_URL="/static/"
. Moja aplikacja działała dobrze, ale nie można znaleźć plików administratora. więc zmień to zarówno na „staticfiles”, jak i na „static”
ADMIN_MEDIA_PREFIX
jest przestarzałe, użyj STATIC_URL
zamiast niego. Ustawienie STATIC_URL = '/static/'
w settings.py powinno załatwić sprawę. Próbować:
import os.path import sys
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
i wtedy:
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
Działa na Django 1.4 pre-alpha SVN-16920.
static/admin
wewnątrz, static/css/
mogę uzyskać dostęp do plików css. Wygląda więc na to, że mogę uzyskać dostęp do plików css tylko wtedy, gdy znajdują się one w środku, static/files
ale collectstatic ich tam nie umieszcza. Oczywiście ręczne przenoszenie folderu po prostu nie działa, ponieważ szablony nadal wskazują static/admin
.
Natknąłem się na ten problem również po samouczku książki Django. W rozdziale 5 | Instalowanie modelu książka stwierdza, że w odniesieniu do domyślnej INSTALLED_APPS - „Tymczasowo skomentuj wszystkie sześć z tych ciągów, umieszczając przed nimi znak krzyżyka (#)”. http://www.djangobook.com/en/2.0/chapter05.html
Następnie, w rozdziale 6, Księga mówi czytelnikowi, aby odkomentował 4 z tych 6 wierszy - „zwróć uwagę, że skomentowaliśmy te cztery wpisy INSTALLED_APPS w rozdziale 5. Odkomentuj je teraz”.
Ale wiersz statcifiles jest tym, co jest potrzebne do przywrócenia CSS na stronie administratora, więc odkomentuj, że 'django.contrib.staticfiles',
Czytałem kilka innych wątków, próbując to naprawić ... odwołałem się do aliasu, tak jak w innych wątkach. Zakłada się, że Twoja własna aplikacja niestandardowa poprawnie obsługuje pliki statyczne, co może wskazywać, że STATIC_ROOT i STATIC_URL mają prawidłowe ustawienia.
STATIC_ROOT = ''
STATIC_URL = '/static/'
Następnie (z katalogu statycznego):
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
Mam nadzieję, że to komuś pomoże ... jest wiele wątków na ten temat. :(
W /project_name/project_name/settings.py
musisz ustawić, STATIC_URL
aby wskazać swojej witrynie, jakiego adresu URL używać dla plików statycznych.
Następnie ustaw STATIC_ROOT
jako folder w systemie plików, który nie jest tym samym, co żaden z katalogów wymienionych na STATICFILES_DIRS
liście.
Po STATICFILES_ROOT
ustawieniu można by uruchomić python manage.py collectstatic
z katalogu projektu.
Spowoduje to skopiowanie wszystkich statycznych plików administratora i wszystkich plików w innych folderach wymienionych na STATICFILES_DIRS
liście. Zasadniczo umieszcza to wszystkie pliki statyczne w jednym miejscu, dzięki czemu można je przenieść do sieci CDN podczas wdrażania witryny. Jeśli jesteś podobny do mnie i nie masz CDN, masz dwie opcje:
STATIC_ROOT
do STATICFILES_DIRS
listy. Pozwoli to wyszukiwarkom plików statycznych w django na zlokalizowanie wszystkich plików statycznych.STATICFILES_DIRS
dołącz tę nową lokalizację.W tej odpowiedzi nie komentuję bezpieczeństwa, po prostu udało mi się stworzyć mój serwer WWW dla małych projektów. Spodziewam się, że będziesz chciał CDN, jak sugeruje django, jeśli robisz coś na większą skalę.
AKTUALIZACJA: Właśnie natknąłem się na ten problem i ta metoda nie zrobiła tego, co myślę, że chcesz. W końcu zadziałało dla mnie, gdy po uruchomieniu collectstatic
skopiowałem tylko statyczne pliki administratora, które umieściłem w STATICFILES_ROOT
katalogu, którego użyłem do moich własnych plików statycznych. To rozwiązało problem.
Oprócz wielu innych przydatnych odpowiedzi, miałem problem, który nie został jeszcze odnotowany. Po aktualizacji z Django 1.3 do 1.6 mój katalog plików statycznych miał uszkodzony dowiązanie symboliczne do statycznych plików administratora django.
Mój settings.py został skonfigurowany z:
STATICFILES_DIRS = (
'/var/www/static/my-dev',
)
Zgodnie z tą odpowiedzią ,
Django będzie teraz oczekiwał znalezienia statycznych plików administratora pod adresem URL / admin /.
Miałem dowiązanie symboliczne, /var/www/static/my-dev/admin
które było ustawione na:
admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/media/
Ta lokalizacja już nie istnieje w django 1.6, więc zaktualizowałem link do:
admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/
A teraz moja strona administratora działa poprawnie.
Jeśli używasz serwera Apache do hostowania witryny django, musisz upewnić się, że statyczny alias wskazuje na twój / katalog do site / site_media / static /. Jeśli twoje pliki statyczne znajdują się w katalogu / katalog do witryny / site / site_media / static /, poprzednia konfiguracja aliasu Apache nie będzie działać.
Podążając za samouczkiem Django, miałem podobny problem iw moim przypadku był to typ MIME używany przez serwer deweloperski podczas obsługi plików css.
Obsługiwany typ MIME to „application / x-css”, co doprowadziło do następującego komunikatu ostrzegawczego w przeglądarce Chrome (na karcie „Sieć” narzędzi programistycznych):
Zasób zinterpretowany jako arkusz stylów, ale przesłany za pomocą aplikacji typu MIME / x-css: „ http://127.0.0.1:8000/static/admin/css/base.css ”
Rozwiązanie, które znalazłem: zmiana typu MIME, który ma być obsługiwany, poprzez dodanie następujących wierszy do pliku manage.py aplikacji internetowej django:
import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'
Uwaga: działało dla mnie z Django 1.7.4 na Pythonie 2.7 i Chrome 40.0
Content-Type: text/plain
i nie są renderowane na stronie.
Ten sam rodzaj problemu napotkałem podczas tworzenia witryny w django-1.10.5 i python-2.7.13. Ale w moim firefox-51 i chrome strona logowania była w stanie pobrać css, ale nadal nie było stylu. Ale dziwnie to działało na IE-8.
Próbowałem zrobić każdą możliwą rzecz wymienioną tutaj i pasującą do mojego zestawu wersji sw. Żaden nie działał.
Ale kiedy wypróbowałem tę samą witrynę w innym systemie, który miał Pythona-2.7.8, zadziałało.
Właśnie opublikowano, jeśli może to komuś pomóc ...
edytowane: później okazało się, że w pythonie-2.7.13 napisanie następujących dwóch wierszy w settings.py (plus wyczyszczenie pamięci podręcznej przeglądarki) załatwiło sprawę
import mimetypes
mimetypes.add_type("text/css", ".css", True)
Mój problem został rozwiązany przez utworzenie nowego środowiska wirtualnego dla projektu, wcześniej korzystałem z interpretera języka Python na poziomie systemu.
$ mkvirtualenv myproject
Źródła: https://docs.djangoproject.com/en/2.1/howto/windows/
biegać: python manage.py collectstatic
Dodaj tę linię do Vhost, który znajduje się pod adresem: /etc/apache2/sites-available/000-default.conf
Alias / static / admin / /var/www/html/example.com/static/admin
Oto całe ustawienie Vhost dla konfiguracji django
<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>
To na pewno zadziała!
Jeśli masz ustawioną wartość w settings.py dla STATICFILES_DIRS i zadeklarowany folder nie istnieje lub jest w złej lokalizacji, spowoduje to, że Administrator nie będzie miał stylu, np. Przez zdefiniowanie STATICFILES_DIRS = (os.path.join (BASE_DIR, "static" )), a folder statyczny nie istnieje
Po wypróbowaniu tysięcy sugestii w końcu znalazłem rozwiązanie, które pomogło. Oto, czego próbowałem i czego używałem. Używam serwera WWW django-1.11 i nginx. Po pierwsze, upewniłem się, że moje pliki CSS / js nie otrzymują 404 w konsoli przeglądarki. Potem zobaczyłem ostrzeżenie
Zasób interpretowany jako arkusz stylów, ale przesyłany z tekstem typu MIME / zwykłym
Znalazłem plik base.html w szablonach administratora i usunąłem go
type="text/css"
a teraz linie wyglądają następująco:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
To rozwiązało problem.
Jeśli problem występuje na serwerze dev / test / prod i przy użyciu Nginx, wykonaj poniższe czynności.
ustaw konfiguracje w settings.py jako coś poniżej
STATIC_URL = '/static/'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Uruchom poniższe polecenie, aby utworzyć pliki css i js w folderze statycznym
$ python manage.py collectstatic
config w / etc / nginx / sites-enabled / example (Nginx) do obsługi plików statycznych
location /static/ {
alias /project/root/folder/static/;
}
działa to dobrze i łatwo. Przeniosłem (ręcznie) folder. po prostu musisz skopiować swój static/admin
z katalogu głównego projektu i wkleić go do public_html, static/
jeśli nie ma folderu statycznego, musisz uruchomić następujące polecenie w terminalu
python manage.py collectstatic
tutaj idziesz z działaniem css administratora Django
Konfigurowanie plików statycznych
Upewnij się, że django.contrib.staticfiles
jest to uwzględnione w INSTALLED_APPS .
W pliku settings.py zdefiniuj STATIC_URL, na przykład:
STATIC_URL = '/static/'
aby uzyskać więcej informacji, pliki statyczne
Panel administracyjny działał dobrze, ale css nie został załadowany. To działało dla Lightsail Django z Apache
1. Zdefiniuj STATIC_ROOT i STATIC_URL w settings.py
STATIC_ROOT = '/opt/bitnami/projects/decisions/decision/'
STATIC_URL = '/static/'
2.Wyrzuć (skopiuj) pliki zasobów administracyjnych do projektu
uruchom python manage.py collectstatic
to polecenie tworzy /opt/bitnami/projects/decisions/decision/admin
folder z css/
fonts/
img/
js/
podfolderami
3. Uczyń / statyczny adres URL dostępny z Apache
Wklej ten fragment kodu w /opt/bitnami/apache2/conf/bitnami/bitnami.conf
(jeśli skonfigurowałeś ssl, to lokalizacja pliku będzie /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. Nie zapomnij zrestartować Apache
sudo /opt/bitnami/ctlscript.sh restart apache