Realizzo un sito di amministrazione Django utilizzando la versione di sviluppo di Django
Ma non ha uno stile CSS:
cosa posso fare?
Grazie
Realizzo un sito di amministrazione Django utilizzando la versione di sviluppo di Django
Ma non ha uno stile CSS:
cosa posso fare?
Grazie
Risposte:
Django non serve file statici da solo. Devi dirgli dove sono i file.
L'ADMIN_MEDIA_PREFIX nel settings.py punterà Django nella giusta posizione.
Dato che stai utilizzando la versione di sviluppo, ti consigliamo il documento specifico per dev per i file statici . Il collegamento di Adam ti porterà alla versione 1.2.
Dopo aver impostato il tuo STATIC_ROOT
e STATIC_URL
, potresti dover eseguire
python manage.py collectstatic
STATIC_ROOT
e STATIC_URL
, esempio: ho combinato "staticfiles" e "static" , usato STATIC_ROOT=os.path.join(BASE_DIR, "staticfiles")"
e STATIC_URL="/static/"
. La mia app ha funzionato bene, ma non è stato possibile trovare i file admin. quindi cambialo sia in "staticfiles" o in "static"
ADMIN_MEDIA_PREFIX
è deprecato ora, usa STATIC_URL
invece. L'impostazione STATIC_URL = '/static/'
in settings.py dovrebbe fare il lavoro. Provare:
import os.path import sys
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
e poi:
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
Funziona su Django 1.4 pre-alpha SVN-16920.
static/admin
all'interno static/css/
allora posso accedere ai file css. Quindi sembra che posso accedere ai file css solo se sono all'interno di static/files
ma il collectstatic non li mette lì. Ovviamente, spostare manualmente la cartella non funziona perché i modelli continuano a puntare static/admin
.
Mi sono imbattuto in questo problema anche seguendo il tutorial di Django Book. Nel Capitolo 5 | Installazione del modello, il libro afferma quando si fa riferimento all'impostazione predefinita INSTALLED_APPS- "Commenta temporaneamente tutte e sei le stringhe inserendo un carattere cancelletto (#) davanti ad esse." http://www.djangobook.com/en/2.0/chapter05.html
Quindi, nel Capitolo 6, il Libro dice al lettore di decommentare 4 di quelle 6 righe - "nota che abbiamo commentato queste quattro voci INSTALLED_APPS nel Capitolo 5. Togli il commento ora."
Ma la riga statcifiles è ciò che è necessario per ripristinare CSS nella pagina di amministrazione, quindi rimuovere il commento da 'django.contrib.staticfiles',
Ho letto molti altri thread cercando di risolvere questo problema ... ho fatto ricorso a un alias come in altri thread. Ciò presuppone che la tua app personalizzata stia servendo correttamente i file statici, il che indicherebbe che STATIC_ROOT e STATIC_URL hanno impostazioni corrette.
STATIC_ROOT = ''
STATIC_URL = '/static/'
Quindi (dalla tua directory statica):
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
Spero che questo aiuti qualcuno ... ci sono molte discussioni su questo argomento. :(
In /project_name/project_name/settings.py
è necessario impostare STATIC_URL
per dire al tuo sito quale URL utilizzare per i file statici.
Quindi imposta STATIC_ROOT
una cartella sul tuo filesystem che non è la stessa di nessuna delle tue directory elencate STATICFILES_DIRS
nell'elenco.
Una volta STATICFILES_ROOT
impostato, verrai eseguito python manage.py collectstatic
dalla directory del progetto.
Ciò copierà tutti i file statici dell'amministratore e tutti i file in qualsiasi altra cartella elencata STATICFILES_DIRS
nell'elenco. Fondamentalmente questo mette tutti i tuoi file statici in un unico posto in modo da poterli spostare sul tuo CDN durante la distribuzione del tuo sito. Se sei come me e non hai un CDN, hai due opzioni:
STATIC_ROOT
alla STATICFILES_DIRS
lista. Ciò consentirà ai cercatori di file statici in django di individuare tutti i file statici.STATICFILES_DIRS
per includere quella nuova posizione.Non faccio commenti sulla sicurezza con questa risposta, è solo il modo in cui sono stato in grado di sviluppare con il mio server web per piccoli progetti. Mi aspetto che vorrai un CDN come suggerisce django se stai facendo qualcosa su scala più grande.
AGGIORNAMENTO: mi sono imbattuto in questo problema e questo metodo non ha fatto quello che penso tu voglia. Quello che ha finito per funzionare per me è stato che dopo aver eseguito collectstatic
ho appena copiato i file statici dell'amministratore che ha inserito nella STATICFILES_ROOT
directory che avevo usato per i miei file statici. Questo ha risolto il problema per me.
Oltre a molte altre risposte utili, ho riscontrato un problema che non è stato ancora notato. Dopo l'aggiornamento da Django 1.3 a 1.6, la mia directory dei file statici aveva un collegamento simbolico interrotto ai file statici dell'amministratore di django.
My settings.py è stato configurato con:
STATICFILES_DIRS = (
'/var/www/static/my-dev',
)
Secondo questa risposta ,
Django ora si aspetterà di trovare i file statici dell'amministratore sotto l'URL / admin /.
Avevo un collegamento simbolico /var/www/static/my-dev/admin
che era impostato su:
admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/media/
Quella posizione non esiste più in django 1.6, quindi ho aggiornato il collegamento a:
admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/
E ora il mio sito di amministrazione funziona correttamente.
Se stai usando il server Apache per ospitare il tuo sito django, devi assicurarti che l'alias statico punti alla tua directory / a site / site_media / static /. Se i tuoi file statici sono in / directory to site / site / site_media / static /, la precedente configurazione dell'alias di Apache non funzionerà.
Mentre seguivo il tutorial di Django, ho avuto un problema simile e nel mio caso il problema era il tipo MIME utilizzato dal server di sviluppo quando serviva i file css.
Il tipo MIME fornito era "application / x-css" che ha portato al seguente messaggio di avviso in Chrome (nella scheda "Rete" degli strumenti per sviluppatori):
Risorsa interpretata come foglio di stile ma trasferita con application / x-css di tipo MIME: " http://127.0.0.1:8000/static/admin/css/base.css "
La soluzione alternativa che ho trovato: cambiare il tipo MIME da servire aggiungendo le seguenti righe al file manage.py della webapp django:
import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'
Nota: ha funzionato per me con Django 1.7.4 su Python 2.7 e Chrome 40.0
Content-Type: text/plain
e non vengono visualizzati nella pagina.
Lo stesso tipo di problema che ho riscontrato durante lo sviluppo di un sito in django-1.10.5 e python-2.7.13. Ma nel mio firefox-51 e chrome, la pagina di accesso è stata in grado di ottenere il css ma non c'era ancora lo stile. Ma stranamente funzionava su IE-8 ..
Ho provato a fare ogni cosa possibile menzionata qui e adatta al mio set di versioni sw. Nessuno ha funzionato.
Ma quando ho provato lo stesso sito su un altro sistema che aveva il python-2.7.8, ha funzionato ..
Appena pubblicato se può aiutare qualcuno ...
modificato: in seguito ho scoperto che in python-2.7.13, scrivere le seguenti due righe in settings.py (oltre a svuotare la cache del browser) aveva fatto il trucco
import mimetypes
mimetypes.add_type("text/css", ".css", True)
Il mio problema è stato risolto creando un nuovo ambiente virtuale per il progetto, prima usavo l'interprete Python a livello di sistema generale.
$ mkvirtualenv myproject
Riferimento: https://docs.djangoproject.com/en/2.1/howto/windows/
correre: python manage.py collectstatic
Aggiungi questa riga a Vhost che si trova in: /etc/apache2/sites-available/000-default.conf
Alias / static / admin / /var/www/html/example.com/static/admin
Ecco l'intera impostazione di Vhost per l'installazione di 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>
Funzionerà di sicuro!
Nel problema si trova in un server dev / test / prod e si utilizza Nginx, seguire i passaggi seguenti.
imposta le configurazioni in settings.py come qualcosa di seguito
STATIC_URL = '/static/'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Esegui il comando seguente per creare file css e js nella cartella statica
$ python manage.py collectstatic
config in / etc / nginx / sites-enabled / example (Nginx) per servire file statici
location /static/ {
alias /project/root/folder/static/;
}
questo funziona bene e facilmente. Ho spostato (manualmente) la cartella. devi solo copiare il tuo static/admin
dalla directory del progetto principale e incollarlo in public_html static/
se non c'è una cartella statica devi eseguire il seguente comando nel terminale
python manage.py collectstatic
ecco qua con il css funzionante dell'amministratore Django
Se hai un valore impostato in settings.py per STATICFILES_DIRS e la cartella dichiarata non esiste o si trova in una posizione sbagliata, l'amministratore non avrà uno stile, ad esempio definendo STATICFILES_DIRS = (os.path.join (BASE_DIR, "static" )) e la cartella statica non esiste
Non riuscendo dopo aver provato migliaia di suggerimenti, ho finalmente trovato una soluzione che ha aiutato. Ecco cosa ho provato e cosa stavo usando. Sto usando django-1.11 e il server web nginx. In primo luogo, mi sono assicurato che i miei file CSS / js non ricevessero 404 nella console del browser. Dopo di che, ho potuto vedere un avvertimento
Risorsa interpretata come foglio di stile ma trasferita con testo di tipo MIME / normale
Ho trovato base.html nei modelli di amministrazione e l'ho rimosso
type="text/css"
e ora le linee hanno questo aspetto:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
Questo ha risolto il problema per me.
Configurazione dei file statici
Assicurati che django.contrib.staticfiles
sia incluso in INSTALLED_APPS .
Nel tuo file settings.py, definisci STATIC_URL, ad esempio:
STATIC_URL = '/static/'
per maggiori dettagli file statici
Il pannello di amministrazione funzionava bene, tranne per il fatto che css non veniva caricato. Questo ha funzionato per Lightsail Django con Apache
1.Definisci STATIC_ROOT e STATIC_URL in settings.py
STATIC_ROOT = '/opt/bitnami/projects/decisions/decision/'
STATIC_URL = '/static/'
2. Espellere (copiare) i file delle risorse di amministrazione nel progetto
eseguire python manage.py collectstatic
questo comando crea una /opt/bitnami/projects/decisions/decision/admin
cartella concss/
fonts/
img/
js/
sottocartelle
3. Rendi / URL statico accessibile da apache
Incolla questo frammento /opt/bitnami/apache2/conf/bitnami/bitnami.conf
(se hai impostato ssl, il percorso del file sarà /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. Non dimenticare di riavviare Apache
sudo /opt/bitnami/ctlscript.sh restart apache