我正在浏览http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/,如果我们在Tornado需要它,我认为使用Django的部分是有趣且有用的。
根据http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/中的设置,我们如何使用manage.py syncdb
?
这是我到目前为止所尝试的内容:
我已经尝试将manage.py转移到与tornado项目相同的文件夹,然后运行manage.py syncdb
,但它返回说找不到settings.py。
比我试图将setting.py移动到同一个文件夹并再次运行manage.py.它告诉我没有找到固定装置。这一次,我不知道如何配置settings.py,因为这不是Django项目。
有任何建议或想法吗?
=================更新======================
大家好, 从上面继续使用Agos提供的建议, 我试过运行python manage.py syncdb --settings = dj_tornado并返回
`"Error: Can't find the file 'settings.py'` in the directory containing 'manage.py'`. It appears you've customized things.
You'll have to run django-admin.py, passing it your settings module.
(If the file settings.py does indeed exist, it's causing an ImportError somehow.)"
所以我做的是运行django-admin.py syncdb --settings=dj_tornado
并返回"django.core.exceptions.ImproperlyConfigured: You haven't set the database ENGINE setting yet."
但奇怪的是数据库引擎已经设置好了。我该如何解决这个问题?我顺便使用django 1.2.3和Tornado 0.2。
=================再次更新======================
大家好,
我已经应用了Agos提供的建议,并将settings.py文件放在与manage.py相同的文件夹中,并运行了命令django-admin.py syncdb --settings=dj_tornado
。
我仍然收到错误:
django.core.exceptions.ImproperlyConfigured: You haven't set the database ENGINE setting yet.
但我已经配置了基于数据库的引擎,如下所示: 在dj_tornado.py中:
from django.conf import settings
settings.configure(
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'dev.db',
}
}
)
我有点在我的智慧结束。我如何在Django项目之外使用syncdb?
最佳。
答案 0 :(得分:1)
如果我说得对,你可以使用--settings
开关将manage.py指向dj_tornado.py
,这毕竟是你的设置文件
来自python manage.py help
提供的帮助
Options: --settings=SETTINGS The Python path to a settings module, e.g. "myproject.settings.main". If this isn't provided, the DJANGO_SETTINGS_MODULE environment variable will be used.
所以我会试试这个:
python manage.py syncdb --settings=dj_tornado
另一个错误,答案的另一个更新!
首先,请考虑该博客文章相当陈旧(2009年9月)。 Django的
DATABASES设置has been updated since 1.2。
博文中的语法是:
settings.configure(DATABASE_ENGINE='sqlite3', DATABASE_NAME='dev.db')
使用Django 1.2.X这肯定是不正确的。这将是相同的版本:
settings.configure(DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'dev.db'
}
})
(对不起代码的可怕格式化)。
如果仍然不起作用,我会考虑创建一个“标准”Django设置文件来导入。但我的赌注是数据库设置语法。
您是否尝试过使用新语法再次使用django-admin.py?如果是这样,并且仍然无法正常工作,那么最小的settings.py就是这样:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'dev.db'
}
}
您也可以将原始配置保留在dj_tornado.py中,并使用settings.py来执行syncdb。