如何更改Django应用的名称?
我通过重命名应用程序的文件夹,导入及其所有引用(模板/索引)来更改了Django中应用程序的名称。但是现在当我尝试运行时出现此错误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.nameDB
中的条目。对于PostgreSQL使用UPDATE django_content_type SET name='<newModelName>' where name='<oldModelName>' AND app_label='<OldAppName>'
元点(如果使用virtualenv):值得注意的是,如果要重命名包含virtualenv的目录,则env中可能会有几个文件包含绝对路径,并且也需要更新。如果你遇到诸如此类的错误,ImportError: No module named …可能是罪魁祸首。(感谢@danyamachine提供此功能)。
以上是 如何更改Django应用的名称? 的全部内容, 来源链接: utcz.com/qa/436011.html