41 votes

django project root auto-découverte

D'accord, je me souviens qu'il y a des commandes que vous pouvez mettre dans le settings.py afin que fondamentalement, lorsque vous déplacez votre projet Django vers un autre répertoire, il ne soit pas bloqué.

Je sais que je pourrais simplement le faire en ayant une variable de chaîne partout où elle mentionne le répertoire personnel, mais existe-t-il un moyen plus élégant de le faire?

99voto

rom Points 673

L'architecture d'un projet dans Django

  • racine/

    • application1/
    • app2/
    • ...
    • principale/
      • paramètres.py

Dans settings.py :

SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) -> donne le chemin du fichier settings.py : root/main/ . Ce n'est PAS LA RACINE DU PROJET

PROJECT_PATH = os.path.abspath(os.path.dirname(__name__)) -> donne la racine du projet : root/ . C'est LA RACINE DU PROJET .

59voto

avi Points 1192

Django 1.8 inclut déjà le répertoire racine du projet sous la forme BASE_DIR :

 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

Et vous pouvez l'utiliser dans votre application en important settings :

 from django.conf import settings
...
...
print(settings.BASE_DIR)

43voto

Ignacio Vazquez-Abrams Points 312628

Saisissez le __file__ global et utilisez les différentes fonctions dans os.path dessus.

 import os.path
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))

13voto

rootart Points 562
PROJECT_PATH = os.path.abspath(os.path.dirname(__name__))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X