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

107
demandé sur Ned Batchelder 2008-11-04 11:12:44

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.

48
répondu Joe 2015-12-23 17:55:52

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.
36
répondu Peter Rowell 2011-07-30 16:08:40

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" />
13
répondu jacanterbury 2017-07-05 20:29:55

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.

12
répondu Oli 2008-11-04 09:23:42

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.

8
répondu James Selvakumar 2010-12-02 08:12:47

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.

0
répondu Roch 2009-11-24 13:38:36