Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

django project root self discovery

Tags:

django

Ok so I recall there are some commands you could put in the settings.py file so that basically when you move your django project to another directory it won't get foo-bar'd up.

I know I could just do this by having a string variable everywhere it mentions the home directory but is there a more elegant way of doing this?

like image 362
UserZer0 Avatar asked Feb 07 '11 09:02

UserZer0


2 Answers

The architecture of a project in Django

  • root/

    • app1/
    • app2/
    • ...
    • main/
      • settings.py

Inside settings.py:

SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) -> gives the path of the file settings.py: root/main/. This is NOT THE ROOT OF THE PROJECT

PROJECT_PATH = os.path.abspath(os.path.dirname(__name__)) -> gives the root of the project: root/. This is THE ROOT OF THE PROJECT.

like image 161
rom Avatar answered Sep 17 '22 15:09

rom


Django 1.8 already includes the project root directory as BASE_DIR:

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

And you can use it in your app by importing settings:

from django.conf import settings ... ... print(settings.BASE_DIR) 
like image 25
avi Avatar answered Sep 16 '22 15:09

avi