[解決済み】Djangoアプリの名前を変更する方法は?
2022-04-15 16:49:49
質問
Django のアプリのフォルダ、インポート、すべての参照 (templates/indexes) の名前を変更して、アプリの名前を変更しました。しかし、現在、以下を実行しようとすると、このエラーが表示されます。
python manage.py runserver
Error: Could not import settings 'nameofmynewapp.settings' (Is it on sys.path?): No module named settings
このエラーをデバッグして解決するにはどうしたらいいですか?何か手がかりはありますか?
解決方法を教えてください。
Django でアプリの名前を変更するには、以下の手順に従います。
- プロジェクトルートにあるフォルダの名前を変更します。
-
依存関係にあるアプリへの参照をすべて変更する、つまり、アプリの
views.py
,urls.py
,manage.py
およびsettings.py
ファイルを作成します。 -
データベーステーブルを編集する
django_content_type
を次のコマンドで実行します。UPDATE django_content_type SET app_label='<NewAppName>' WHERE app_label='<OldAppName>'
-
また、モデルがある場合、モデルテーブルの名前を変更する必要があります。postgres の場合は
ALTER TABLE <oldAppName>_modelName RENAME TO <newAppName>_modelName
. mysqlの場合も同じだと思います(@null_radixさんがおっしゃっています)。 -
(Django >= 1.7 の場合) アップデートしてください。
django_migrations
テーブルを使用して、以前のマイグレーションが再実行されないようにします。UPDATE django_migrations SET app='<NewAppName>' WHERE app='<OldAppName>'
. 備考 : この手順が Django 1.8+ に必要かどうか (コメントで) 議論されています; 確実に知っている人がいたら、ここで更新してください。 -
もし、あなたの
models.py
のメタクラスはapp_name
がリストされているので、これも必ずリネームしてください (@will が言っていました)。 -
を名前空間化した場合
static
またはtemplates
フォルダを作成した場合は、それらの名前も変更する必要があります。たとえば、次のように名前を変更します。old_app/static/old_app
をnew_app/static/new_app
. -
djangoのリネーム用
models
を変更する必要があります。django_content_type.name
のエントリをDBに登録します。PostgreSQLの場合はUPDATE django_content_type SET name='<newModelName>' where name='<oldModelName>' AND app_label='<OldAppName>'
-
2021年7月16日更新
: また
__pycache__/
フォルダを削除してください。EOFError: marshal data too short when trying to run the server
. 言及者:@Serhii Kushchenko
メタポイント(virtualenvを使用する場合)。
注意すべきは、virtualenv を含むディレクトリの名前を変更する場合、 env の中に絶対パスを含むファイルがいくつかあり、それも更新する必要があることです。もし、以下のようなエラーが発生した場合は
ImportError: No module named ...
が原因かもしれません。(これを提供してくれた @danyamachine に感謝します)。
その他の参考文献 また、以下のリンクも参考にしてください。
- DjangoとSouthでアプリの名前を変更する
- あるdjangoアプリから新しいアプリにモデルを移行するにはどうしたらいいですか?
- Django アプリの名前を変更するには?
- Django Southによる後方移行
- Django/South を使ってモデル名を変更する最も簡単な方法とは?
- Pythonコード (おかげさまで A.Raouf ) を使って、上記の手順を自動化することができます (未試験のコードです。警告されています!)。
- Pythonコード (おかげさまで ラファポニーマン ) を使って、上記の手順を自動化することができます (未試験のコードです。警告されています!)。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonはWordの読み書きの変更操作を実装している
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み】Django Southでの後方移行について
-
[解決済み] Django/South を使ってモデルの名前を変更する最も簡単な方法とは?