如何从django项目中删除应用程序

时间:2012-07-08 11:22:33

标签: python django

最初我在Django的一个项目中创建了2个应用程序(app_a和app_b)。现在我要删除一个(比如app_a)。我该怎么办?是否从设置文件中的INSTALLED_APPS中删除了应用名称?

4 个答案:

答案 0 :(得分:34)

您需要删除或检查以下内容:

  • INSTALLED_APPS删除应用。
  • 删除该应用中模型的所有数据库表(请参阅数据库中的app_name_model_name)。
  • 检查其他应用中的任何导入(可能是他们从该应用导入代码)。
  • 检查模板是否使用该应用的任何模板标签(如果该应用不再存在则会产生错误)。
  • 检查您的设置文件,看看您是否使用了该应用中的任何代码(例如your_app/context_processors.py中的上下文处理器,如果它有文件等)。
  • 检查是否在其他应用中使用了该应用的任何静态内容。
  • 完全删除app目录。

当您遵循正确的编码原则(即,每个Django应用程序是Web应用程序的自包含部分)时,上述大多数情况都不会发生。但是当其他应用程序确实使用该应用程序的某些部分时,您需要首先检查它,因为它可能需要重构才能删除应用程序。

答案 1 :(得分:0)

这取决于应用程序(如何安装,如何使用等),但通常您可以从INSTALLED_APPS中删除应用程序,然后删除数据库中的表。

答案 2 :(得分:0)

如果在 Simeon Visser 解释的操作以及 Elias Dorneles 在注释中引用的其他答案之后,您在运行服务器后得到了类似的信息:

System check identified 1 issue (0 silenced).
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\python\releases\381_x64\lib\threading.py", line 932, in _bootstrap_inner
  [...]
  File "c:\python\env\django3python381\lib\site-packages\django\db\migrations\graph.py", line 58, in raise_error
    raise NodeNotFoundError(self.error_message, self.key, origin=self.origin)
django.db.migrations.exceptions.NodeNotFoundError: Migration oeuvres.0001_initial dependencies reference nonexistent parent node ('medias', '0001_initial')

浏览到您的appname.migrations文件夹,并注释对要删除的应用程序的所有引用。在上述情况下,作品应用程序与我要删除的 media 应用程序具有依赖性,该依赖关系已在 oeuvres.0001_initial 迁移中定义文件。

我不认为/尚不知道这是否会对迁移过程产生影响,但我打算将所有迁移内容重置为生产版本,然后导入数据,例如此处所述: https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html

答案 3 :(得分:-6)

是的,然后在cmd中运行

pip uninstall appName

转到项目目录并删除应用, 在PyCharm中右键单击并删除它。

相关问题