如何将所有django应用程序放在特定文件夹中

60 投票
9 回答
35023 浏览
提问于 2025-04-16 05:35

我有一个Django项目,假设叫做“project1”。

通常,应用程序的文件夹结构是这样的:

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

如果我想把所有的应用程序放在一个单独的文件夹里,比如叫“apps”,我该怎么做呢?这样的话,文件夹结构应该看起来像下面这样:

/project/
         apps/
              app1/
              app2/
              ...
         __init__.py
         manage.py
         settings.py
         urls.py

9 个回答

21

你可以利用一下在 settings.py 文件里已经存在的 BASE_DIR 变量。

只需要添加以下内容:

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

希望这对你有帮助。

25

你可以很简单地做到这一点,但你需要把 settings.py 文件改成这样:

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

然后把你的 urls.py 文件改成这样:

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

.. 还要修改任何 import 的部分,让它指向应用程序的位置

65

你可以通过在你的 settings.py 文件里添加以下内容,把你的 apps 文件夹加入到 Python 的搜索路径中:

import os
import sys

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

这样一来,你就可以像使用项目根目录下的应用一样,使用这个文件夹里的所有应用了!

撰写回答