Google App EngineでDjangoあとで読む

Django情報の宝庫である、スパムとかでも取り上げられていましたが、普通にDjangoプロジェクトを動かそうとすると、myprj.myappなどの部分をmyappなどに修正するか、もしくは1階層余分にディレクトリを作る必要がありました。

こちらのサイトにその解決法と、Google App EngineでDjangoをそのまま動かす方法が掲載されていたので、自分用にメモ。

結論から言うと、main.pyでsys.path.append(‘/home/kei/workspace’)とやって、パスを通すのがキモだったみたいです。



Step1:Djangoプロジェクトの作成


まず新しいDjangoアプリを作成しましょう。これは、Django付属のdjango-adminを使用します。


> django-admin.py myprj


Step2:main.pyの作成


ここを参考にmyprjディレクトリ内にmain.pyを作成します。sys.path.appendのpathはご自身の環境に合わせてmyprjディレクトリが設置されている場所を記入してください。


import os, sys
# Here is the main point!!!!!!!
os.environ['DJANGO_SETTINGS_MODULE'] = 'myprj.settings'
sys.path.append('/home/kei/workspace')

# Google App Engine imports.
from google.appengine.ext.webapp import util

# 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

# Log errors.
#django.dispatch.dispatcher.connect(
# log_exception, django.core.signals.got_request_exception)

# Unregister the rollback event handler.
django.dispatch.dispatcher.disconnect(
django.db._rollback_on_exception,
django.core.signals.got_request_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()



Step3:app.yamlの作成など


あとは適当に。


application: myprj
version: 1
runtime: python
api_version: 1

handlers:
- url: /static
static_dir: static

- url: /.*
script: main.py


これで、普通に例えば、manage.py startapp myappなどでmyappアプリを作成したとすると、myprj.myapp.views.indexなどでアクセスできるようになります。後はモデル部分をBigTable用に変更する必要がありますが、これなら既存のDjangoアプリをほぼそのまま流用できるようになりそうです。

追記:
コード部分やmain.pyのインデントがうまく表示されない・・・。。そのあたり、脳内保管かソース元確認でよろしくお願いします。

2008/04/09 12:05 | djangoCOMMENT(0)TRACKBACK(0)はてなブックマークする TOP

  • Webクリエーション・アウォードから派生して駄文 (05/13)
  • Google App EngineでDjango (04/09)
  • Google App EngineでDjangoっぽくアプリ作る。Hello Worldの1歩先。 (04/09)
  • CSSEZリニューアルでお世話になりそうなあれこれまとめ。 (04/03)
  • CSSEZのリニューアルをちょっと垣間見てみない?? (03/31)
  • Vicunaにあったらいいなと思うあれこれ。 (03/28)
  • YUIさんとYUI RADIO (03/06)
  • 敢えて「ひいき」するということ。 (12/14)
  • プロセスの柔軟性を奪うことは何をもたらすのか。 (12/13)
  • ZAPAさんが読みたいブログ(自薦)募集中。 (12/09)
  • コメント

    コメントの投稿



    管理者にだけ表示を許可する

     | BLOG TOP |