0

我正在浏览http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/,我认为如果我们需要它,使用 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 提供的建议,在与 manage.py 相同的文件夹中包含一个 settings.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?

最好的。

4

1 回答 1

1

如果我理解正确,您可以使用--settings开关将 manage.py 指向dj_tornado.py,毕竟这是您的设置文件

更新 1

来自帮助,可在python manage.py help

选项:
  --settings=SETTINGS 设置模块的 Python 路径,例如
                        “myproject.settings.main”。如果未提供,则
                        DJANGO_SETTINGS_MODULE 环境变量将是
                        用过的。

所以我会试试这个:

python manage.py syncdb --settings=dj_tornado

更新 2

另一个错误,答案的另一个更新!
首先,考虑到那篇博文已经很老了(2009 年 9 月)。姜戈的

数据库
自 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 来执行同步数据库。

于 2010-12-12T17:16:56.523 回答