2009-09-18 6 views
4

両方のフレームワークを使用することは可能ですか? 私はDjangoとwebappはGAEで一緒に暮らしていますか?

from google.appengine.ext import webapp 
from django.template.loader import render_to_string 

class MainPage(webapp.RequestHandler): 

    def get(self): 
     self.response.out.write(render_to_string('some.template')) 

別のURLにマッピングされて実行されている
from django.http import HttpResponse 

def hello(request): 
    return HttpResponse("Hello world") 

を持つことができるように?

EDIT: 質問は基本的に私はDjangoはある意味ではので、あなたは間違いなくGoogle App Engineの(または任意のWSGI上でそれを実行することができ、ライブラリのセットだけで

urlpatterns = [ 
       # webapp-style handler 
       (r'/webapp', views.MainPage), 
       # django 
       (r'/django', views.hello), 
       ] 
+0

私はこれに追加することは、Google/AppEngineの/内線/ webappのに行くと、それはDjangoのテンプレート機能と重複するので、それをチェックアウト、Webアプリケーションフレームワークを使用する場合。 私はまた、いくつかの理由で(私はテンプレートでurl()メソッドを使用し、変数kwargsを私のRequestHandlerクラスに渡すことができます)、app.yamlと比べてPythonモジュール内からurlパターンを定義することに力を入れています。だからニックのアドバイスはいいですが、それについてはいくつかの方法があります。 オープンソースのGAEプロジェクトをいくつか見てみると、さまざまなアプローチがあります。 – jamtoday

+0

ありがとう、jamtoday。 あなたはどんなプロジェクトを見ることをお勧めしますか? – yanchenko

答えて

4

確かに、1つのサブアプリケーションで0.9.6を使用していない限り、もう1つのサブアプリケーションでは1.0(use_library呼び出し経由で)です。単にURLの正規表現をapp.yamlのハンドラに分割するだけでよいのです。

1

を実装するのですかに帰着互換性のあるWebコンテナ)。ただし、要求/応答サイクルを完全に制御することが期待され、リクエストライフサイクル、セッション管理などの抽象度が異なるため、2つのフレームワークを自由に組み合わせようとするとうまくいきません。

独自のWSGIハンドラモジュールを作成することで、Djangoを使用してGAEアプリケーションをコーディングすることができます。単一のDjangoアプリケーションでGAEインスタンスのすべてのリクエストに答える方法については、基本的な概要についてはthis articleを参照してください。単一の要求内の2つを混合

あなただけのDjangoの構文から借りてフロントエンドをしたい場合は、 Djangoのテンプレートライブラリ(またはJinjaのようなクローン)を使用することができますが、仕事に行くのではありません。また、上記の記事でWSGIディスパッチャを拡張することで、GoogleアプリケーションハンドラとDjangoエンドポイントを別のURLで設定することができます。しかし、私は、1つのサイトに対して2つの全く異なるWebフレームワークをサポートしようとしているかどうかは、余分な複雑さに本当に価値があったのかどうかは疑問です。

+0

良い答え。しかし、ただ一つのメモ..GAEは既にDjangoのテンプレートlibを使っています:http://code.google.com/appengine/docs/python/gettingstarted/templates.html – seth

0

はい!実際、あなたがGAEサイトに行くと、「入門」のチュートリアルで正確に示されています!両方のライブラリが組み込まれているので、それを取得するのは非常に簡単です。

Google App Engine: Getting Started

関連する問題