django应用程序与Windows上的应用程序引擎
我试图在Windows上安装django 1.1应用程序引擎。django应用程序与Windows上的应用程序引擎
当启动应用程序引擎,我发现了以下错误:http://slexy.org/view/s21oLrbkHh
的步骤我做的是:1。 )创建通过发射 2.新的应用程序)复制我的代码(里面是空的Django项目)
我的main.py代码附在下面。 我在行:“import django.db”,我可以从cmd成功执行。
你有什么想法吗?
main.py:
\# main.py
import os, sys
os.environ["DJANGO\_SETTINGS\_MODULE"] = "taskhood.settings"
sys.path.append("/home/brox/tmp/mashname")
\# Google App Engine imports.
from google.appengine.ext.webapp import util
\# Django version
from google.appengine.dist import use_library
use_library('django', '1.1')
\# Force Django to reload its settings.
from django.conf import settings
settings._target = None
import django.core.handlers.wsgi
import django.core.signals
import django.db
import django.dispatch.dispatcher
def log_exception(*args, **kwds):
logging.exception('Exception in request:')
\# Log errors.
django.dispatch.Signal.connect(
django.core.signals.got_request_exception,
log_exception)
\# Unregister the rollback event handler.
django.dispatch.Signal.disconnect(
django.core.signals.got_request_exception,
django.db._rollback_on_exception)
def main():
# Create a Django application for WSGI.
application = django.core.handlers.wsgi.WSGIHandler()
# Run the WSGI CGI handler with that application.
util.run_wsgi_app(application)
if __name__ == "__main__":
main()
的Django 1.1是不是在App Engine上的默认版本,在使用代替0.96或指定要使用1.1。见this article on goodle code。
对于这个问题,模型需要适应,因为App Engine没有常规(sql)数据库。这也在给定的链接上描述。
不正确:请参阅http://code.google.com/appengine/docs/python/tools/libraries.html#Django – 2009-11-30 10:27:07
这很有趣,我在App Engine上使用Django 1.1而不是Django的模型。 – 2009-11-30 15:17:38
你说得对。它*被*支持,但你必须指定它。我会改变答案。 – extraneon 2009-11-30 15:56:55
为什么你需要django.db?你打算如何使用它?我的猜测是Django正在搜索sqlite并且无法找到它?也许如果你安装它,错误会消失。
正如其他人所指出的,您不能在AppEngine上使用Django的ORM。然而,很明显,您正在按照一些说明导入django.db
以断开某些信号。错误消息显示您的问题:系统上未安装sqlite3库。
通常这与Python版本2.5一起,所以你应该把它作为你的2.6安装的一部分,但也许你有一个最小安装出于某种原因。尝试从python.org或ActiveState安装其中一个完整的Python版本,或者您可以尝试安装pysqlite2库。
您可以导入数据库,但必须调整模型。我认为谷歌可能已经做了一些神奇的数据库模块。 – extraneon 2009-11-30 10:24:20
确保您的数据库配置在settings.py
是空白:
DATABASE_ENGINE = ''
DATABASE_NAME = ''
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''
随着如下:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
)
INSTALLED_APPS = (
'django.contrib.contenttypes',
'django.contrib.sites',
)
以上是最低限度,以在GAE上减去管理员身份运行Django的。
我使用以下两种不同的Django main.py
在GAE上的项目和他们很好地工作:
import logging, os, sys
from google.appengine.dist import use_library
use_library('django', '1.1')
# Must set this env var *before* importing any part of Django
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
# Google App Engine imports.
from google.appengine.ext.webapp import util
# Remove the standard version of Django.
for k in [k for k in sys.modules if k.startswith('django')]:
del sys.modules[k]
# Force sys.path to have our own directory first, in case we want to import
# from it.
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
import django.core.handlers.wsgi
import django.db
def main():
# Create a Django application for WSGI.
application = django.core.handlers.wsgi.WSGIHandler()
# Run the WSGI CGI handler with that application.
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
您可以发布您settings.py?看来你的DATABASE_ENGINE设置被设置为GAE不支持的sqlite。 – 2009-11-30 10:35:03