Comment utiliser CSS dans Django?
Je crée mon application en utilisant Django, et je me demande comment je peux faire en sorte que Django utilise mon fichier CSS? Quels paramètres dois-je faire pour que Django voie le fichier css?
NB: sur une machine locale
6 réponses
Si vous utilisez le serveur de développement, suivez le guide pratique du projet django pour gérer les fichiers statiques pour configurer votre URL, puis référencez vos fichiers multimédias dans le modèle-disons, une image dans un dossier image de /site_media/images/foo.gif
.
Plus généralement, vous demandez comment servir un fichier statique à partir de Django. Si vous utilisez Apache, vous devriez lire http://docs.djangoproject.com/en/dev/howto/deployment/modpython/
Si vous exécutez le serveur de développement (par exemple, sur votre ordinateur portable), lire http://docs.djangoproject.com/en/dev/howto/static-files/
Notez l'avertissement big, fat concernant le serveur de développement Django:
- L'utilisation de ce serveur est inefficace et peu sûr.
- ne l'utilisez pas dans un cadre de production.
- Utilisez ceci uniquement pour le développement.
Cela m'a causé des problèmes aussi pendant un certain temps (404 erreurs non trouvées). Le bit manquant pour moi était d'éditer le tuple STATICFILES_DIRS
dans settings.py pour me donner ceci:
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(os.path.dirname(__file__),'media').replace('\\','/'),
)
Cela a ensuite ramassé mes fichiers CSS dans un dossier appelé 'media' qui était au niveau supérieur de mon projet django.
J'avais aussi:
MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/media/'
(assurez-vous d'avoir le premier /
ci-dessus dans STATIC_URL
)
Bien sûr, comme indiqué ci-dessus, vous devez avoir le fichier CSS correctement inclus à partir de vos fichiers html. Je a:
<link href="{{ STATIC_URL }}css/ea_base.css" rel="stylesheet" type="text/css" media="screen" />
Quels paramètres dois-je faire pour que Django voie le fichier css?
Néant.
Assurez-vous que votre modèle inclut le fichier CSS (comme le fait HTML standard) et placez le fichier CSS sur le serveur multimédia.
Pour clarifier: avec Django, il est fortement recommandé de servir tous vos médias (tout ce qui n'est pas du html dynamique) à partir d'une instance de serveur différente. La façon dont vous implémentez cela dépend complètement de vous, mais la plupart des gens créent un sous-domaine.
Les documents officiels de django ne m'ont pas aidé. J'espère que le blog "Django: comment servir des fichiers statiques" AIDE certains d'entre vous.
Eh bien, la façon la plus simple d'utiliser CSS avec django est de l'ajouter à vos modèles en tant que fichiers statiques.
Mais c'est un peu comme ajax, Je n'ai rien trouvé qui dise comment l'inclure de manière standard.
Il existe un module CSS-compressor pour django si vous souhaitez optimiser sa taille.