修正できる冗長な行がいくつかあることを除けば、前の回答が -1 になった理由はわかりません。とにかく、Python パスに何も追加しない、少し異なる方法を見つけました。
これが最終的なディレクトリ構造です。後で説明します。
mysite
├── mysite
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── apps
│ ├── __init__.py
│ └── myfirstapp
│ ├── __init__.py
│ ├── admin.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
└── manage.py
プロジェクトを作成したばかりでも、アプリを移動したい場合でも、アプリをapps
格納するサブディレクトリを作成してください。トリックは、__init__.py
そのディレクトリに を追加することです。
mkdir apps
touch apps/__init__.py
これで、既存のアプリをサブディレクトリに移動できますapps
。代わりに新しいものを作成したい場合は、次のコマンドがあります。
python manage.py mysecondapp
mv mysecondapp apps/
警告: 電話をかけようとしないでくださいpython manage.py ./apps/mysecondapp
。何らかの理由で、これによりそのディレクトリ内の他のすべてのアプリが削除されます。私はこの方法で 1 日仕事を失いました。
次に、いくつかのインポートを修正する必要があります。あなたのsettings.py
プレフィックスは次のapps
とおりです。
INSTALLED_APPS = (
...
'apps.myfirstapp',
'apps.mysecondapp'
)
urls.py
最後に、プロジェクトを prefixに修正しますapps
:
urlpatterns = patterns('',
url(r'^myfirstapp', include('apps.myfirstapp.urls')),
...
)
記述方法によっては、アプリ内でいくつかのインポートを修正する必要がある場合もあります。を使用するfrom models import MyFirstModel
か、プレフィックスを使用してfrom apps.myfirstapp.models import MyFirstModel
ください。
つまり、apps
( を追加して) ディレクトリを python パッケージに__init__.py
すると、それをインポート パスの一部として使用できます。これは、展開方法に関係なく、追加の構成なしで機能するはずです。