我正在编写自己的CMS,并且应该在数据库中写入一些初始设置信息。我不喜欢用夹具数据编写一些带有夹具数据的XML / Json文件,我将在运行syncdb时将其导入。
我在想的是我可以创建一些cms_init.py文件并在manage.py syncdb之前运行它。在这个文件中,我需要设置环境,然后使用模型,我可以将自定义数据写入数据库。
另一种方法 - 在管理端拥有方法,例如initialize()和它的url。它将存储一些变量并且永远不会运行第二次,在这个函数中我只需要调用我需要的模型就可以了。
为什么我正在寻找解决方案,因为我需要动态初始数据写入,这将依赖于settings.py和每次其他模块的设置,我不想每次运行时都重写数据库的初始文件新项目。
有什么想法吗?
答案 0 :(得分:2)
不要自动/隐式地执行此操作,使用户使用manage.py命令显式执行此操作,例如
python manage.py your_cms init
运行CMS功能时,如果初始化已发生,则检查或更确切地说是try-except
,如果没有提醒用户首先运行init命令。
明确地做它对用户来说更安全并且不会给用户带来很大的不便,因为它只能做一次。