How to keep all my django applications in specific folder

邮差的信 提交于 2019-11-30 10:21:17

问题


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

回答1:


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!




回答2:


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




回答3:


How about you utilize the BASE_DIR variable already present in the settings.py.

Just add the following:

import sys
sys.path.insert(0, os.path.join('BASE_DIR', 'apps'))

Hope this helps.




回答4:


If you're using virtualenv/virtualenvwrapper (and you should be), you can use the included add2virtualenv command to augment your python path:

mkdir apps
cd apps
pwd
[/path/to/apps/dir]

Copy that path to clipboard, then:

add2virtualenv /path/to/apps/dir



回答5:


Just add __init__.py (4 underscores in total) in your apps folder. Now you can just do

urlpatterns = [
        path('polls/',include('apps.polls.urls')),
        path('admin/', admin.site.urls)
]


来源:https://stackoverflow.com/questions/3948356/how-to-keep-all-my-django-applications-in-specific-folder

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!