我是Python和Django的新手,在学习Django Book版时,我了解了命令‘python manage.py syncdb’,它为我生成了数据库表.在开发环境中,我在内存数据库中使用sqlite,所以每次重新启动服务器时都会自动擦除它.那么我该如何编写这个‘syncdb’命令的脚本呢?(应该在‘settings.py’文件中完成吗?)

CLARIFICATION

OP使用的是内存中的数据库,在使用针对该数据库定义的Django模型的任何进程开始时,都需要初始化该数据库.确保数据库初始化(每个进程启动一次)的最佳方法是什么.这将用于运行测试,或通过manage.py runserver或Web服务器进程(例如使用WSGI或mod_python)运行服务器.

推荐答案

所有Django管理命令can be accessed programmatically:

from django.core.management import call_command
call_command('syncdb', interactive=True)

理想情况下,您应该在runserver上使用预初始化信号来激活它,但是这样的信号是doesn't exist.因此,实际上,如果我是您,我会用创建一个自定义管理命令(如runserver_newdb)并在其中执行以下命令的方式来处理此问题:

from django.core.management import call_command
call_command('syncdb', interactive=True)
call_command('runserver')

有关编写自定义管理命令的详细信息,请参见the documentation.

Django相关问答推荐

在Django管理中仅显示外键的特定值

Django:作为模型中的列表元素的字段

如何显示;Django认证系统;在模板中?

在Django ORM中引用非主外键

新的 Django 开发人员无法在网站上显示Hello World,而不是默认安装成功页面

如何访问 django 模板中的字典值?

Django rest framework, AttributeError: 'str' object has no attribute 'data' 无法使用表单上传图片

使用 Pytest 在 Django 中编写测试用例时如何加载特定目录中的所有固定装置

是否可以在 Django 中重命名应用程序的组名?

在 Django 中处理信用卡付款的最佳 Select 是什么?

Django 模板上的 URL 编码

将网络测功机添加到 Heroku django 应用程序时如何克服Coudn't find that formation错误?

Django:显示在每个页面上加载页面所花费的时间

有 Django List View 模型排序吗?

Django:在管理界面中显示图像

Python - 覆盖 __init__ 的最干净方法,其中在 super() 调用之后必须使用可选的 kwarg?

Celery - 在一台服务器上运行不同的工作人员

django 应用基于条件的样式类

在 Python 中生成 API KEY 和 SECRET 的最简单和最安全的方法是什么

Django:在模块中实现 status字段的最佳方式