je crée un site d'administration Django avec Version de développement Django
mais il n'a pas de style css:
que puis-je faire .
merci
Django ne sert pas de fichiers statiques par lui-même. Vous devez lui dire où sont les fichiers.
Le ADMIN_MEDIA_PREFIX dans le fichier settings.py pointera Django au bon endroit.
Puisque vous utilisez la version de développement, vous souhaiterez que le document spécifique à dev pour les fichiers statiques explique comment . Le lien d'Adam vous mènera à la version 1.2.
Après avoir configuré vos STATIC_ROOT
et STATIC_URL
, vous devrez peut-être exécuter
python manage.py collectstatic
ADMIN_MEDIA_PREFIX
est obsolète maintenant, utilisez STATIC_URL
à la place. Définir STATIC_URL = '/static/'
dans settings.py devrait faire l'affaire. Essayer:
import os.path import sys
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
et alors:
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
Fonctionne sur Django 1.4 pré-alpha SVN-16920.
J'ai également rencontré ce problème à la suite du didacticiel de livre Django. Au chapitre 5 | Installation du modèle, le livre indique en faisant référence à la valeur par défaut INSTALLED_APPS- "Mettez temporairement en commentaire les six chaînes en mettant un caractère de hachage (#) devant elles." http://www.djangobook.com/fr/2.0/chapter05.html
Ensuite, au chapitre 6, le livre dit au lecteur de supprimer le commentaire 4 de ces 6 lignes -- "Notez que nous avons commenté ces quatre entrées INSTALLED_APPS au chapitre 5. Décommentez-les maintenant."
Mais la ligne statcifiles est ce qui est nécessaire pour restaurer CSS sur la page d’administration, alors ne commentez pas ce commentaire 'Django.contrib.staticfiles',
J'ai lu plusieurs autres threads essayant de résoudre ce problème ... utilisé un alias comme dans d'autres threads . Cela suppose que votre propre application personnalisée sert correctement les fichiers statiques, ce qui indiquerait que vos paramètres STATIC_ROOT et STATIC_URL sont corrects.
STATIC_ROOT = ''
STATIC_URL = '/static/'
Puis (à partir de votre répertoire statique):
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
J'espère que cela aide quelqu'un ... il y a beaucoup de discussions sur ce sujet . :(
Dans /project_name/project_name/settings.py
, vous devez définir STATIC_URL
pour indiquer à votre site quelle URL utiliser pour les fichiers statiques.
Ensuite, définissez STATIC_ROOT
pour être un dossier sur votre système de fichiers qui ne correspond à aucun de vos répertoires listés dans la liste STATICFILES_DIRS
.
Une fois que STATICFILES_ROOT
est défini, vous devez exécuter python manage.py collectstatic
à partir du répertoire du projet.
Cela copiera tous les fichiers statiques admin et tous les fichiers des autres dossiers répertoriés dans la liste STATICFILES_DIRS
. En gros, tous vos fichiers statiques sont regroupés au même endroit, ce qui vous permet de les déplacer sur votre CDN lors du déploiement de votre site. Si vous êtes comme moi et que vous n'avez pas de CDN, vous avez alors deux options:
STATIC_ROOT
à la liste STATICFILES_DIRS
. Cela permettra aux chercheurs de staticfiles dans Django de localiser tous les fichiers statiques.STATICFILES_DIRS
pour inclure ce nouvel emplacement.Je ne fais aucun commentaire sur la sécurité avec cette réponse, c'est simplement la façon dont j'ai pu développer avec mon serveur Web pour de petits projets. Je pense que vous voudrez un CDN, comme le suggère Django, si vous faites quelque chose de plus grand.
UPDATE: Je viens de rencontrer ce problème et cette méthode ne fait pas tout à fait ce que je pense que vous voulez. Ce qui a fini par fonctionner pour moi, c’est après avoir lancé collectstatic
que je viens de copier les fichiers statiques admin qu’il a placés dans STATICFILES_ROOT
dans le répertoire que j’avais utilisé pour mes propres fichiers statiques. Cela a résolu le problème pour moi.
Si vous utilisez un serveur Apache pour héberger votre site Django, vous devez vous assurer que l'alias statique pointe vers votre répertoire/sur le site/site_media/static /. Si vos fichiers statiques sont dans le répertoire/du site/site/site_media/static /, la configuration d'alias Apache précédente ne fonctionnera pas.
En plus de nombreuses autres réponses utiles, j'ai eu un problème qui n'a pas encore été noté. Après la mise à niveau de Django 1.3 à 1.6, mon répertoire de fichiers statiques présentait un lien symbolique rompu avec les fichiers statiques de l'administrateur Django.
Mon fichier settings.py a été configuré avec:
STATICFILES_DIRS = (
'/var/www/static/my-dev',
)
Selon cette réponse ,
Django s'attend maintenant à trouver les fichiers statiques admin sous l'URL /admin /.
J'ai eu un lien symbolique /var/www/static/my-dev/admin
qui a été mis à:
admin -> /usr/local/lib/python2.7/dist-packages/Django/contrib/admin/media/
Cet emplacement n'existe plus dans Django 1.6, j'ai donc mis à jour le lien vers:
admin -> /usr/local/lib/python2.7/dist-packages/Django/contrib/admin/static/admin/
Et maintenant, mon site d’administration fonctionne correctement.
Tout en suivant le didacticiel Django, j'ai eu un problème similaire et dans mon cas, le problème était le type MIME utilisé par le serveur de développement lors du traitement de fichiers CSS.
Le type MIME servi était "application/x-css", ce qui a conduit au message d'avertissement suivant dans Chrome (dans l'onglet "Réseau" des outils de développement):
Ressource interprétée comme une feuille de style mais transférée avec le type MIME application/x-css: " http://127.0.0.1:8000/static/admin/css/base.css "
La solution de contournement que j'ai trouvée: changer le type de mime à servir en ajoutant les lignes suivantes au fichier manage.py de la webapp Django:
import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'
Note: a travaillé pour moi avec Django 1.7.4 sur Python 2.7 et Chrome 40.0
Assurez-vous que 'Django.contrib.staticfiles'
est dans votre INSTALLED_APPS
dans votre settings.py
Si vous définissez une valeur dans settings.py pour STATICFILES_DIRS et que le dossier déclaré n'existe pas ou se trouve à un emplacement incorrect, l'administrateur n'aura aucun styleeg .__ en définissant STATICFILES_DIRS = (os. path.join (BASE_DIR, "static")) et le dossier static n'existe pas
Si le problème concerne un serveur dev/test/prod et que vous utilisez Nginx, suivez les étapes ci-dessous.
définir les configurations dans settings.py comme quelque chose en dessous
STATIC_URL = '/static/'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Exécutez la commande ci-dessous pour créer des fichiers css et js dans un dossier statique.
$ python manage.py collectstatic
config dans/etc/nginx/sites-enabled/exemple (Nginx) pour servir des fichiers statiques
location /static/ {
alias /project/root/folder/static/;
}
Faute d'essayer des milliers de suggestions, j'ai finalement trouvé une solution qui m'a aidé. Voici ce que j’ai essayé et ce que j’utilisais .J’utilise Django-1.11 et le serveur Web nginx . Tout d’abord, j’ai veillé à ce que mes fichiers CSS/js n’obtiennent pas la valeur 404 dans la console du navigateur. Après cela, je pouvais voir un avertissement
Ressource interprétée comme une feuille de style mais transférée avec le type mime text/plain
J'ai trouvé le fichier base.html dans les modèles d'administrateur et supprimé
type="text/css"
et maintenant les lignes ressemblent à ceci:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
Cela a résolu le problème pour moi.
Mon problème a été résolu en créant un nouvel environnement virtuel pour le projet, avant que j'utilisais un interpréteur python de niveau système général.
$ mkvirtualenv myproject
Référence: https://docs.djangoproject.com/fr/2.1/howto/windows/
lancer: python manage.py collectstatic
Ajoutez cette ligne à Vhost qui se trouve à: /etc/Apache2/sites-available/000-default.conf
Alias / static/admin//var/www/html/example.com/static/admin
Voici le paramétrage complet de Vhost pour Django setup
<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>
Cela fonctionnera à coup sûr!
Même problème que j'ai rencontré lors du développement d'un site dans Django-1.10.5 et python-2.7.13. Mais dans mon firefox-51 et chrome, la page de connexion a pu obtenir le css mais il n'y avait toujours pas de style. Mais bizarrement, cela fonctionnait sur IE-8 ..
J'ai essayé de faire tout ce qui est mentionné ici et qui convient à mon ensemble de versions sw. Aucun n'a travaillé.
Mais quand j'ai essayé le même site sur un autre système qui avait le python-2.7.8, cela a fonctionné.
Juste posté si cela peut aider quelqu'un ...
édité: plus tard, j'ai trouvé que dans python-2.7.13, écrire les deux lignes suivantes dans settings.py (plus vider le cache du navigateur) avait fait l'affaire
import mimetypes
mimetypes.add_type("text/css", ".css", True)