Ads by Googleあとで読む

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/-- --:-- | スポンサー広告はてなブックマークする 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)
  • 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 |