【问题标题】:How to delete an app from a django project如何从 django 项目中删除应用程序
【发布时间】:2012-07-08 02:59:11
【问题描述】:

最初,我在 Django 的一个项目中制作了 2 个应用程序(app_a 和 app_b)。现在我想删除一个(比如 app_a)。我该怎么做?从设置文件中的INSTALLED_APPS 中删除应用名称是否足够?

【问题讨论】:

    标签: python django


    【解决方案1】:

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

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

    如果您一直遵循正确的编码原则(即,每个 Django 应用程序都是 Web 应用程序的独立部分),那么上述大多数情况都不会发生。但是当其他应用确实使用了该应用的某些部分时,您需要先检查一下,因为它可能需要在删除应用之前进行重构。

    【讨论】:

    • 关于 django_contet_type、auth_permission 和其他 auth 表(如果需要,除了 django_migration)是什么?
    • 这个答案是对另一个答案的补充:stackoverflow.com/questions/35745220/…(其中提到了 auth_permission 和其他表)
    • 大家好。我认为.. 如果它是一个过程,它应该由 django 完成,提供的方式与执行子命令创建一个的方式相同。你不觉得吗?
    • 还要检查 /settings//url.py
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      如果在 Simeon Visser 解释的操作和 cmets 中 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 文件夹并注释对您要删除的应用程序的任何引用。在上述情况下,oeuvres 应用程序依赖于 medias 应用程序,我想删除它,在 oeuvres.0001_initial 迁移中定义文件。

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

      【讨论】:

        猜你喜欢
        • 2019-10-16
        • 2016-09-20
        • 1970-01-01
        • 2021-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多