我将在我当前的应用程序中使用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重命名备份为db_current_data_time.db,那么views.py方法应该是什么?
答案 0 :(得分:7)
您可以使用call_command
manage.py
运行的命令
from django.core import management
management.call_command('your_command', your_options)
因此,在各自的备份和恢复视图中,您可以调用命令。
答案 1 :(得分:1)
虽然您可以使用call_command
来调用管理命令,但这确实不是理想的选择。管理命令应该由人员从外壳交互式地运行,而不是从视图中调用。
如果要同时提供管理命令和网络操作,请将管理命令的内容移到单独的功能中(我建议myapp/operations/foo
)。然后重构您的管理命令以利用此独立功能。一旦可行,请重构视图以调用相同的操作(函数),并传递相同的参数。
这将允许在管理命令和视图之间实现最佳的代码共享,和将使针对您的核心逻辑的编写测试更加合理。