Django:如何完全卸载Django应用程序?

Django:如何完全卸载Django应用程序?,django,Django,完全卸载Django应用程序并删除数据库的过程是什么?Django应用程序是一组*.py文件和一个带有Django应用程序名称的目录。因此,您可以简单地删除包含所有*.py文件的整个文件夹 要从数据库中“删除”表格,应使用DELETE from 此外,您必须从根目录的setting.py中删除带有app name的行 Django

完全卸载Django应用程序并删除数据库的过程是什么?

Django应用程序是一组*.py文件和一个带有Django应用程序名称的目录。因此,您可以简单地删除包含所有*.py文件的整个文件夹

要从数据库中“删除”表格,应使用
DELETE from

此外,您必须从根目录的setting.py中删除带有app name的行

  • Django<1.7有一个方便的管理命令,它将为您提供删除应用程序的所有表所需的SQL。有关更多信息,请参阅。基本上,运行
    /manage.py sqlclear my_app_name
    可以获得应该执行的SQL语句,从而消除数据库中应用程序的所有痕迹。您仍然需要将这些语句复制并粘贴(或通过管道)到SQL客户机中。对于Django 1.7及更高版本,请使用
    /manage.py migrate my_app_name zero
    (请参阅文档),它会自动运行数据库清理

  • 要从项目中删除应用程序,只需将其从项目的
    设置.py中的
    已安装的应用程序中删除即可。Django将不再加载该应用程序

  • 如果您不再希望应用程序的文件挂起,请从项目目录或PYTHONPATH上它所在的其他位置删除应用程序目录

  • (可选)如果应用程序在某处存储了媒体文件、缓存文件或其他临时文件,您可能还需要删除这些文件。同时也要警惕应用程序中可能遗留的会话数据

  • (可选)我还将删除任何过时的内容类型

  • 像这样

    from django.contrib.contenttypes.models import ContentType
    for c in ContentType.objects.all():
        if not c.model_class():
            print "deleting %s"%c # print(f"deleting {c}") # for Python 3.6+
            c.delete()
    
  • 注释掉
    已安装的应用程序中的
    设置.py
  • 删除项目中的所有文件夹
    \uuuu pycache\uuu
    migrate
  • 删除
    models.py中不必要的模型
  • 删除
    views.py
    admin.py
    end等中的所有导入链接
  • 删除不必要应用程序的
    url.py
    中的所有链接
  • 在数据库中删除与应用程序关联的不必要的表(我使用帮助程序“Valentina Studio”执行此操作)
  • 删除应用程序的文件夹
  • 在命令行中执行此操作:
    python manage.py migrate
    python manage.py syncdb
  • 我真的很喜欢来自的步骤-它包括迁移支持


    也许它需要在两次代码更新中进行调整-但是当您必须处理许多部署(如:测试阶段、BETA版本和生产-在我的情况下)时,它看起来非常安全。

    在我的环境中,项目存在好几次:我有一个开发系统,一些团队成员有一个开发系统,客户和生产系统都有一个暂存系统。这意味着我不想手动执行sql命令。我希望它是自动化的

    目标:删除应用程序和所有数据库表

    步骤1:清空应用程序,但保持安装状态 从应用程序中删除除文件夹“migrations”之外的所有文件

    执行此命令:

    python manage.py makemigrations -n drop_all_tables my_app_to_remove
    
    目录现在如下所示:

    my_app_to_remove/
    my_app_to_remove/__init__.py
    my_app_to_remove/migrations
    my_app_to_remove/migrations/0001_initial.py
    my_app_to_remove/migrations/....
    my_app_to_remove/migrations/0030_drop_all_tables.py
    my_app_to_remove/migrations/__init__.py
    
    在文件“settings.py”中保留
    my\u app\u以删除

    步骤2:部署更改 更新所有项目。告诉团队成员更新他们的项目并运行迁移

    步骤3:从settings.py中删除“my_app_to_remove” 现在从settings.py中删除“我的应用程序”并重新部署。

    要完全删除Django应用程序(带型号),请执行以下步骤。让我们假设我们正在删除一个名为
    note\u app
    的应用程序:

  • 在其他应用程序中搜索任何note_应用程序导入。最简单的方法是在项目范围内搜索“from note_app”。您可能希望从搜索中排除note_应用程序目录
  • 注释掉应用程序模型中的所有模型。如果您向Django admin注册了note_应用程序模型,您可能还需要从
    note_app.admin
    文件中删除条目
  • 尝试运行Django应用程序时查找并解决错误。另外,您可能在步骤1中遗漏了一些模型导入
  • 请注意,根据您定义ForeignKey、OneToOne和ManyToMany字段的方式,您可能在步骤1中遗漏了Note_应用程序模型的一些键。重要的是,在继续之前,需要删除指向其他应用程序模型中的应用程序模型的任何字段。花一分钟确保这些字段没有遗漏;如果是,则删除保留的字段,并创建迁移以从数据库中删除这些字段
  • 运行
    makemigrations
    。这将创建一个note_应用程序迁移,删除您刚才推荐的所有模型。此迁移还应从其他应用程序的模型中删除引用note_应用程序模型的字段
  • 运行您的迁移。在删除应用程序目录之前,必须在所有环境(包括生产环境)中运行迁移。从数据库中删除应用程序模型的迁移将意外地出现在您的note_应用程序目录中。如果过早删除应用程序目录,则将在迁移有机会清理数据库之前删除这些迁移
  • 您可能会注意到,已删除模型的内容类型已过时。当被问及是否要删除这些内容类型时,回答“是”
  • Git
    提示:提交迁移,记下提交,然后创建一个单独的提交,删除note\u应用程序目录。当您准备在登台或生产环境中应用更改时,请签出您注意到的提交,运行迁移,然后签出最新的提交以删除应用程序目录。您的第一次提交在已安装的应用程序中仍应包含note\u应用程序
  • 删除包含便笺应用程序的目录
  • 已安装的应用程序中删除
    注释应用程序
    <