修正できる冗長な行がいくつかあることを除けば、前の回答が -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すると、それをインポート パスの一部として使用できます。これは、展開方法に関係なく、追加の構成なしで機能するはずです。