如何更改Django应用程序的名称?

我已经改变了在Django的应用程序的名称,通过重命名其文件夹,导入和所有的引用(模板/索引)。 但是现在,当我尝试运行python manage.py runserver时,出现这个错误

 Error: Could not import settings 'nameofmynewapp.settings' (Is it on sys.path?): No module named settings 

我怎样才能debugging和解决这个错误? 任何线索?

按照以下步骤在Django中更改应用程序的名称:

  1. 重命名您的项目根目录中的文件夹
  2. 在其依赖关系中更改对应用程序的引用,即应用程序的views.pyurls.py ,manage.py和settings.py文件。
  3. 使用以下命令编辑数据库表django_content_typeUPDATE django_content_type SET app_label='<NewAppName>' WHERE app_label='<OldAppName>'
  4. 同样,如果你有模型,你将不得不重新命名模型表。 对于postgres,使用ALTER TABLE <oldAppName>_modelName RENAME TO <newAppName>_modelName 。 对于MySQL我也认为它是相同的(正如@null_radix所提到的)
  5. (对于Django> = 1.7)更新django_migrations表以避免重新运行以前的迁移: UPDATE django_migrations SET app='<NewAppName>' WHERE app='<OldAppName>'注意 :如果Django 1.8+需要这个步骤,则有一些争议(在注释中)。 如果有人知道肯定请在这里更新。
  6. 如果您的models.py的元类具有app_name列表,请确保也重命名(由@will提及)。
  7. 如果您已将空间或templates文件夹命名为您的应用程序,则还需要重命名这些文件夹。 例如,将old_app/static/old_app重命名为new_app/static/new_app
  8. 为了重命名django models ,您需要更改DB中的django_content_type.name条目。 对于postgreSQL,使用UPDATE django_content_type SET name='<newModelName>' where name='<oldModelName>' AND app_label='<OldAppName>'

元数据点(如果使用virtualenv):值得注意的是,如果你正在重命名包含你的virtualenv的目录,你的env中可能会有几个文件包含一个绝对path,并且还需要更新。 如果你得到错误,如ImportError: No module named ...这可能是罪魁祸首。 (感谢@danyamachine提供这个)。

其他参考资料:您可能还想参考下面的链接以获取更完整的图片

  1. 用Django和South重命名一个应用程序
  2. 如何将模型从一个django应用程序迁移到新的应用程序中?
  3. 如何更改Django应用程序的名称?
  4. 使用Django South向后迁移
  5. 使用Django / South重命名模型最简单的方法?
  6. Python代码 (感谢A.Raouf )自动执行上述步骤(未经testing的代码,您已被警告!

Django 1.7中的新function是一个存储configuration并提供反省的应用程序registry。 这个机器让你改变几个应用程序的属性。

我要说的重点是,重命名应用程序并不总是必要的:通过应用程序configuration,可以解决冲突的应用程序。 但是,如果你的应用需要友好的命名,也是如此。

作为一个例子,我想命名我的民意调查应用程序“来自用户的反馈”。 它是这样的:

polls目录中创build一个apps.py文件:

 from django.apps import AppConfig class PollsConfig(AppConfig): name = 'polls' verbose_name = "Feedback from users" 

添加默认的应用程序configuration到您的polls/__init__.py

 default_app_config = 'polls.apps.PollsConfig' 

有关更多应用程序configuration: https : //docs.djangoproject.com/en/1.7/ref/applications/

如果您正在使用PyCharm并且项目在重命名后停止工作:

  1. 编辑运行/debuggingconfiguration并更改环境variablesDJANGO_SETTINGS_MODULE,因为它包含您的项目名称。
  2. 转到设置/语言和框架/ Django并更新设置文件的位置。