5

我将在我当前的应用程序中使用 django-dbbackup。我的任务是在从 UI 中按下“备份数据库”按钮时使用 custom_name.db 备份我最新的 sqlite3 数据库,并在按下“还原此备份”时从现有备份列表中还原备份。

在 django-dbbackup 中有两个管理命令,dbbackup 和 dbrestore,它们被用作

dbbackup [-s <servername>] [-d <database>] [--clean] [--compress] [--encrypt]

dbrestore [-d <database>] [-s <servername>] [-f <localfile>]

现在我的问题是,如果我有原始数据库名称 original_db.db 并且我想备份这个数据库重命名为 db_current_data_time.db,views.py 方法应该是什么?

4

2 回答 2

16

manage.py您可以通过使用调用命令运行call_command

from django.core import management
management.call_command('your_command', your_options)

因此,在您各自的备份和恢复视图中,您可以调用您的命令。

于 2013-11-04T12:11:13.397 回答
5

虽然可以用来call_command调用管理命令,但确实不太理想。管理命令应该由人从 shell 以交互方式运行,而不是从视图中调用。

如果您想同时提供管理命令Web 操作,请将管理命令的内容移到单独的函数中(我推荐myapp/operations/foo)。然后重构您的管理命令以利用此独立功能。一旦工作正常,重构您的视图以调用相同的操作(函数),并传入相同的参数。

这将允许管理命令和视图之间的最佳代码共享,并使为您的核心逻辑编写测试更加理智。

于 2018-09-18T07:29:03.580 回答