django应用程序与Windows上的应用程序引擎

时间:2009-11-30 10:02:47

标签: django google-app-engine installation

我正在尝试在Windows上安装带有django 1.1的应用引擎。

启动应用引擎时,我收到以下错误: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()

4 个答案:

答案 0 :(得分:2)

正如其他人所说,你不能在AppEngine上使用Django的ORM。但是很明显,您正在按照一些指示导入django.db以断开某些信号。该错误消息显示您的问题:您的系统上未安装sqlite3库。

通常这与Python 2.5版本一起提供,所以你应该将它作为2.6安装的一部分,但也许你出于某种原因需要进行最小的安装。尝试从python.org或ActiveState安装一个完整的Python版本,或者你可以尝试安装pysqlite2库。

答案 1 :(得分:0)

你为什么需要django.db?你打算如何使用它?我的猜测是Django正在搜索sqlite而它无法找到它?也许如果你安装它就会出错。

答案 2 :(得分:0)

确保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 GAE项目中使用了以下main.py,它们运行良好:

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

答案 3 :(得分:-1)

Django 1.1不是App Engine上的默认版本,而是使用0.96或指定要使用1.1。请参阅this article on goodle code

就此而言,需要调整模型,因为App Engine没有常规(sql)数据库。这也在给定的链接上描述。