2009-07-10 5 views
6

JSONを使用してこれらの2つの間でやりとりすることができますが、JSのすべてのDjangoオブジェクトを手動で再作成する必要があることも知っています。DjangoとGWTの使い方は?

これを行うのに役立つツールやライブラリがありますか?それとも、同じ目標を達成するためのよりよい方法ですか?

は私だけ見つかったこれら2: http://palantar.blogspot.com/2006/06/agad-tutorial-ish-sort-of-post.html Django + GWT or Jquery

しかし、その後、私はまだ手動DRY違反することになり、私のオブジェクトを、ミラーリングする必要があります。

+0

Vinayによると、GWT内のすべてのDjangoオブジェクトを再作成する必要はありません。フロントエンドはGWT、バックエンドはDjangoを使用してください。数ヶ月前に、私はDjango/GWTプロジェクトを上記のようにセットアップするプロセスを経て、このトピックに関する最新のチュートリアルが完全に欠落していることに気づきました。このため、私はGWTとDjangoをJSONを使ってコミュニケーションをとる方法を含めブログにまとめるという関連トピックのほとんどをカバーしようとしました。 http://andersguide.wordpress.com/2013/05/01/using-json-for-communication-between-gwt-and-django/ – user2340471

答えて

2

GWTとDjangoの両方で新しいモデルを作成する場合は、コードを生成する最も簡単な方法は、非常に単純なモデル定義から開始することです。

classname 
attribute1 type1 
attribute2 type2 

少しのPythonで非常に簡単であることを解析し、あなたが上記のような行を解析されたら、ジャンゴとGWTの両方のコードを生成しています。 DjangoとGWTの両方のカスタマイズは少しだけ手間がかかります。外部キーを考慮することはより複雑です。オブジェクトをシリアライズするための、少ししか生成されないメソッドを忘れないでください。 JSON形式で

私が持っていた最初の反射は、Pythonでイントロスペクションを使用することでしたが、djangoモデルで外部キーフィールドを調べるときに問題に遭遇しました。たぶん私はdjango-docsプロジェクトのコードを見てみるべきです(Googleのコードで利用可能です)。

最後に、GWT + Djangoの開発を高速化するために、ホストモードでhttpプロキシサーブレットを使用することができます.GWTフロントエンドを実行するたびにGWTをコンパイルする必要はありません。 Djangoバックエンド。 http://www.servletsuite.com/servlets/httpproxy.htmのサーブレットはおそらくトリックを行います。

3

JSですべてのDjangoオブジェクトを手動で作成する必要はありません。 GWTはUIオブジェクトだけで構成され、Djangoバックエンドと通信してモデルデータをブラウザに表示し、更新を返送します。私は、Adobe FlexとGWTの両方のフロントエンドでDjangoバックエンドを使用しましたが、どちらの場合でもJSでDjangoオブジェクトを再作成する必要はありませんでした。しかし、私はバックエンドでカスタマイズされたJSONエンコーダを使用しました。これは、モデルインスタンス内のすべてではなく、UIで必要な情報のみを送信できるように(一部は機密情報である可能性があるため)行われました。

1

GWTやDjangoのような2つの気まぐれなフレームワークを使って手作業で繰り返すのは本当に難しいです。私はそれをあきらめてしまいました(私が最初に書いた記事を書きました)。

最終的に、JavaがGoogle App EngineだったGWT/Javaをやり直すことになりました。もちろん、トレードオフがあります。 Javaは設定が難しいと思われますが、いったん簡単に設定するともっと簡単になります。結局のところ、DRYの言葉は私にとってサイレンの呼び出しが多すぎることが判明しました。 GWT/GAEを使用すると、オブジェクトがまっすぐに通過するだけで、脳を言語間で切り替える必要はありません。今すぐLiveCycleとFlexについて学びましょう。 ;)

うまくいけばそれは理にかなって役立ちました - それは長い週でした! :)

P.S.は、ここで私はJSON形式で、REST APIを介してDjangoのモデルを公開するジャンゴ・ピストンを使用して行う私のジャンゴ/ GWTプロジェクトでそのGWT/Django Tutorial-ish Post

6

の新しい場所です。その達成方法の詳細については、ピストンのウェブサイトをご覧くださいhttp://bitbucket.org/jespern/django-piston/wiki/Home

次に、GWT側では、Djangoモデルのオーバーレイタイプ(DevGuideCodingBasicsOverlay)を作成するだけです。

私は、いくつかのRESTの良さは、Djangoのバックエンドからの私のモデルを取得するために追加しましたが、あなたは( HttpRequestBuilder)好きなあなたを使用することができ、その後GWT JSONParserを使用して、および JavaScriptObjectを取得し、キャストして、あなたをGWT-ディスパッチ( http://code.google.com/p/gwt-dispatch/)を使用

GWTであなたの望むモデルを取得します。ちょっと複雑すぎるかもしれませんが、逆のことではありません。使用するのがとても快適です。

0

私はVinay Sajipと全く同意します。 GWTを使ってdjangoを使ってアプリケーションを作成するつもりなら、djangoはバックエンドになり、GWTはフロントエンドになり、JSONを通じて通信します。

バックエンドのdjangoモデルをフロントエンドのGWTプログラムに直接公開しようと考えている場合は、プログラムが単純すぎるか、欠落しているレイヤーのデータ転送オブジェクト(DTO)を設計しています。 GWT frontend present infoの場合、バックエンドモデルのすべての属性を必要とせず、実際に必要なものだけを転送する必要があります。

単純な例の1つは、電子メールアプリケーションを作成する場合、電子メールタイトルのリストを読み込むときに、すべての電子メール本文を転送しないことです。

私は同じ問題を抱えていました。特にRPCの考え方に従っていると、私は苦労しました。

関連する問題