views:

60

answers:

2

I have a Django project, let's say "project1". Typical folder structure for applications is:

/project1/
         /app1/
         /app2/
         ...
         __init__.py
         manage.py
         settings.py
         urls.py

What should I do if I want to hold all of my applications in some separate folder, 'apps' for example? So that structure should look like the following:

/project/
         apps/
              app1/
              app2/
              ...
         __init__.py
         manage.py
         settings.py
         urls.py
+2  A: 

You can do this very easily, but you need to change the settings.py to look like this:

INSTALLED_APPS = (
    'apps.app1',
    'apps.app2',
    # ...
)

And your urls.py to look like this:

urlpatterns = patterns('', 
    (r'^app1/',include('apps.app1')),    
    (r'^app2/',include('apps.app2')),    
)

.. and modify any imports to point to the app location

Gabi Purcaru
+2  A: 

You can add your apps folder to your python path by inserting the following in your settings.py:

import os
import sys

PROJECT_ROOT = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(PROJECT_ROOT, 'apps'))

Then you can use all the apps in this folder just in the same way as they were in your project root!

lazerscience
If you ask me, this leads to confusion.
Gabi Purcaru