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() 
+0

您可以发布您settings.py?看来你的DATABASE_ENGINE设置被设置为GAE不支持的sqlite。 – 2009-11-30 10:35:03

的Django 1.1是不是在App Engine上的默认版本,在使用代替0.96或指定要使用1.1。见this article on goodle code

对于这个问题,模型需要适应,因为App Engine没有常规(sql)数据库。这也在给定的链接上描述。

+0

不正确:请参阅http://code.google.com/appengine/docs/python/tools/libraries.html#Django – 2009-11-30 10:27:07

+0

这很有趣,我在App Engine上使用Django 1.1而不是Django的模型。 – 2009-11-30 15:17:38

+0

你说得对。它*被*支持,但你必须指定它。我会改变答案。 – 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库。

+0

您可以导入数据库,但必须调整模型。我认为谷歌可能已经做了一些神奇的数据库模块。 – 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()