web-dev-qa-db-ja.com

Django vs other Python Webフレームワーク?

存在するすべてのPython Webフレームワークを試してみましたが、銀の弾丸フレームワークが存在せず、それぞれに長所と短所があることに気づくまでに長い時間がかかりました。 Snakelets を使用して、大騒ぎせずに下位レベルのほとんどすべてを制御できることを心から楽しんでいたが、その後 TurboGears を発見し、それを使用している(1.x) CatwalkやWebコンソールなどのツールは私にとって非常に貴重です。

しかし、WSGIサポートをもたらすTurboGears 2が登場し、DjangoとWSGIキャンプの間の宗教的議論を読んだ後、私は本当に "正しい方法で行う"、例えばWSGIを学習し、Djangoと他のフルスタックフレームワーク、Djangoまたは私のためにすべてを行う高レベルのフレームワークを使用するのとは対照的に。私が見ることができる後者の欠点はかなり明白です:

  1. 私はその過程で何も学んでいない
  2. 低レベルの何かをする必要があるなら、それは苦痛になるだろう
  3. 認証を使用する基本的なサイトだけに必要なオーバーヘッドは非常識です。 (IMO)

だから、私の質問は、それがより良い選択であるか、それは単なる意見の問題であり、それを吸い込んで、Djangoそれが最小の大騒ぎで望むものを達成するなら(データベースへの認証とCRUDインターフェースが必要です)?Werkzeug、Glashammer、および友人を試しましたが、AuthKitとRepozeは、基本認証をセットアップするために必要なステップの数と同様に、私を怖がらせました。ドキュメントが不足しているようで、認証やCRUDインターフェイスなどの単純な機能を参照すると、さまざまなWikiページとドキュメントが互いに矛盾しているように見え、バージョンなどのハッキングが異なります。


S. Lottが、私が十分に明確ではなかったことを指摘してくれてありがとう。私の質問は次のとおりです。長期的には価値がありますが、短期的には苦痛ではありません(たとえば、ある種の妥協点はありますか?)-WSGIを学ぶか、「バッテリーに含まれる」フレームワークに固執しますか?後者の場合、Django=をもう一度試してみるか、TurboGears 1.xを使い続けるか、他のフレームワークに挑戦するべきかどうかについての提案に感謝します。

また、CherryPyを試しましたが、すぐに使用して使用できる十分なCRUDアプリケーションを見つけることができませんでした。

60
miniman

TG2をもう一度見ることをお勧めします。人々は、最後のバージョン以降に行われたいくつかの進歩に気付かなかったと思います。利用可能なユーティリティのWSGIスタックの拡大とは別に、考慮すべきTG2固有の項目がかなりあります。ハイライトは次のとおりです。

TurboGears Administration System -データベースへのこのCRUDインターフェイスは、宣言的な構成クラスを使用して完全にカスタマイズ可能です。また、Dojoと統合され、無限にスクロール可能なテーブルを提供します。サーバー側の検証も自動化されています。管理インターフェイスはRESTful URLとHTTP動詞を使用するため、業界標準を使用してプログラムで簡単に接続できます。

CrudRestController / RestController -TurboGearsは、サービスを構造化して処理します。コントローラ。 RestControllerを拡張するだけで、標準化されたHTTP動詞を使用する機能を提供します。 Sprox とCrudRestControllerを組み合わせると、完全にカスタマイズ可能な自動生成フォームを使用してアプリケーション内の任意の場所にcrudを配置できます。 TurboGearsは、URLのファイル拡張子としてmime-typesをサポートするようになったため、コントローラーで.jsonと.xmlを、htmlのレンダリングに使用するのと同じインターフェース(コントローラーから辞書を返す)でレンダリングできます。

リンクをクリックすると、sphinxで構築された新しいドキュメントセットがあり、これは過去のドキュメントよりも広範なものであることがわかります。

最高の Webサーバー[〜#〜] orm [〜#〜] 、および template system (s)(独自に選択)ボンネットの下に、TGが必要な人々にとってなぜ理にかなっているのかが簡単にわかりますサイトが拡大しても拡張性はすぐに得られます。

TurboGearsは動くターゲットを狙っていると見られることがよくありますが、リリースに関して一貫性があります。つまり、必要な最新の機能を取得するためにトランクから作業することを心配する必要はありません。未来へ:より簡単なPasterコマンドでアプリケーションの機能を拡張できるTurboGears拡張機能が増えました。

16
percious

DjangoとWSGIキャンプの間の宗教的議論

WSGIとは何か、そしてDjangoとは少し混乱しているように見えます。 DjangoとWSGIが競合していると言うことは、CとSQLが競合していると言っているようなものです。リンゴとオレンジを比較しているのです。

Djangoはフレームワークであり、WSGIはサーバーがフレームワークと対話する方法のためのプロトコル(Djangoでサポートされています)です。最も重要なことは、WSGIを直接使用することを学ぶことは、アセンブリを学ぶことに少し似ています。これは素晴らしい学習体験ですが、実際の運用コードのためにやるべきことではありません(そうするつもりもありませんでした)。

とにかく、私のアドバイスはあなた自身でそれを理解することです。ほとんどのフレームワークには、「1時間でwiki/blog/pollを作成する」タイプの演習があります。それぞれに少し時間をかけて、どれが一番好きかを見つけてください。結局のところ、さまざまなフレームワークを試してみたくないのであれば、どのようにそれらを選択できますか?

53
Jason Baker

Djangoまたは同様のフルスタックフレームワークを使用し、ドキュメントと大規模なコミュニティの価値を過小評価しています。 Djangoかなりの学習曲線があります;そして、もしそれがあなたが望むすべてをしなければ、フレームワークのコードが突き通せないようではありません。

個人的な経験:Twisted/Nevow、TurboGears、および他のいくつかのPython Webフレームワークをいじくり回しました。フレームワークのコードは永続的に未完成であり、私の下で書き直されました、ドキュメントはしばしば存在しないか間違っていて、唯一の実行可能なサポートはIRC(ここで私はしばしば素晴らしいアドバイスを得ましたが、あまりにも多くの質問をすると印象的だったように感じました).

それに比べて、過去数年で、私はDjangoでいくつかのサイトをノックオフしました。私の以前の経験とは異なり、それらは実際に展開され実行されています。 Django開発プロセスは遅くて注意深いかもしれませんが、結果としてビットロットと非推奨がはるかに少なくなり、実際に役立つドキュメントになります。

Django やっと入った) のHTTP認証サポートは、それが#3で言及しているのであれば、数週間前です。

21
Nicholas Riley

あなたの質問は、「WSGIを学び、すべてを自分でやる価値があるのか​​」、または「あなたのためにすべてを行うフルスタックフレームワークを使用する」のようです。

それは間違った二分法であり、明らかな第三の方法があると思います。 TurboGears 2は、「すべてを実行する」スタイルのフレームワークからWSGIミドルウェアを理解するまでのスムーズなパスと、アプリケーションのニーズに合わせてフレームワークのほぼすべての側面をカスタマイズする機能を提供しようとします。

すべてのレベルですべての場所で成功するわけではありませんが、特に、TurboGears 1の経験を既にお持ちの場合は、TG2の学習曲線は最初は非常に簡単で、いつでも正確に深めることができると思います君はそれが要る。

特定の問題に対処するには:

  • TG1で使用しているものと一致する、すぐに使用可能な認証システムを提供します。
  • Tgext.adminと呼ばれるインターフェースのような、すぐに使える「Django admin」を提供します。これは、dojoと連携して、インターフェースのような派手なスプレッドシートをデフォルトにします。

また、そこにある他のいくつかのオプションに対処し、利点について少しお話ししたいと思います。

  • CherryPy。 CherryPyは素晴らしいWebサーバーであり、ニースのミニマルなWebフレームワークだと思います。内部的にはWSGIに基づいていませんが、「フルスタック」エクスペリエンスを提供するわけではありませんが、WSGIを適切にサポートしています。ただし、高速である必要があり、DjangoまたはTurboGearsによって提供されるデフォルトに特に適していないカスタムセットアップの場合は、優れたソリューションです。

  • Django。私はDjangoはWebサイトを開発するための非常に素晴らしい、きちんと統合されたシステムです。あなたのアプリケーションと作業スタイルが標準セットアップにうまく収まるなら、それは素晴らしいですただし、DBの使用を調整する必要がある場合、テンプレート言語を置き換える、別のユーザー認証モデルを使用する、または別の方法で行う場合、フレームワークと戦う可能性が非常に高くなります。

  • Pylons CherryPyのようなPylonsは、最小限のWebフレームワークです。 CherryPyとは異なり、システム全体でWSGIが有効になっており、SQLAlchemyやMakoなどの適切なデフォルト設定が用意されており、拡張性に優れています。新しい公式ドキュメントは、あなたが見ているように見える古いwikiドキュメントよりもはるかに優れた品質です。

11
Mark Ramm

CherryPyをご覧になりましたか?ミニマルでありながら効率的でシンプルです。邪魔にならない程度に低いレベルですが、複雑さを隠すのに十分なレベルです。よく覚えていれば、TurboGearsはその上に構築されました。

CherryPyでは、あらゆるものを選択できます。 (テンプレートフレームワーク、必要に応じてORM、バックエンドなど)

7
Martin

WSGIを学ぶ

WSGIはとてつもなくシンプルです。基本的には、次のような関数です。

def application(environ, start_response) pass

この関数は、HTTP要求を受信したときに呼び出されます。 environには、さまざまなデータ(リクエストURIなど)、start_responseは、ヘッダーを設定するために使用される呼び出し可能な関数です。

返される値はWebサイトの本文です。

def application(environ、start_response):start_response( "200 OK"、[])return "..."

これですべてです。これはフレームワークではなく、Webフレームワークが使用するプロトコルです。

サイトを作成するために、WSGIを使用することはnot「正しい方法」です-既存のフレームワークを使用することは..ですが、Python web-frameworkでWSGIを使用するのは絶対に正しい方法です。

どのフレームワーク(CherryPy、Django、TurboGearsなど)を使用するかは基本的に個人的な好みです。 "簡単な推奨python frameworks"

6
dbr

長期的に見れば何が価値があるかは長期的に必要なものに依存するため、正しい答えはあなたが実際に必要としているものに依存していると思います。あなたの目標がアプリケーションをできるだけ早く展開することであるなら、「より簡単な」ルート、すなわちDjangoは間違いなく行くべき道です。十分にテストされ、十分に文書化されたシステムの価値は、まさにあなたが望むものを過小評価することはできません。

一方、他のドメインに適用される可能性のあるさまざまな新しいことを学ぶ時間があり、カスタマイズの範囲を最も広くしたい場合は、ターボギアのようなものが優れています。 Turbogearsは最大限の柔軟性を提供しますが、will Repoze、SQLAlchemy、Genshiなどの外部ドキュメントを読むのに多くの時間を費やさなければなりません。 TG2ドキュメントは、外部ドキュメントが以前よりも優れていると考えられているため、場合によってはTG1ドキュメントよりも意図的に詳細度が低くなります。この種のものが障害か投資かは、あなた自身の要件に依存します。

2
Kylotan

Web2pyをチェックアウトしましたか?最近多くのPython Webフレームワークを評価した後、このフレームワークを採用することにしました。まだお持ちでない場合は、Google App Engineもチェックしてください。

2
greg

Djangoは間違いなく学習する価値があり、目的に合っているようです。付属の管理インターフェイスは簡単に起動して実行でき、認証を使用します。

「任意の下位レベル」については、sqlを意味する場合、extraキーワードを使用してsqlをクエリに押し込むことが完全に可能です。文体的に、あなたは常にそれを可能な限り避けようとします。

「何も学ばない」ということに関しては、本当の質問は、あなたの好みが主に低レベルまたは高レベルの何かを学ぶことであるかどうかです。

1
David Berger

Pylonsは私にとって素晴らしいツールのようです:

  • 実際のWebフレームワーク(CherryPyは単なるWebサーバーです)、
  • 小さなコードベース-他のプロジェクトの再利用、
  • 貼り付けに基づいて、WSGIを完全に念頭に置いて記述され、
  • アプリをすぐにコーディングし、必要に応じて低レベルのビットに触れることができます。

CherryPyとTurboGearsを使用して、他の多くのフレームワークを見てきましたが、Pylonsほど軽量で生産的なものはありませんでした。 Googleでのプレゼンテーション を確認してください。

1
lispmachine

TurboGears 2をお勧めします。彼らは最高のPython world。

WSGI:TG2またはその他のフレームワークで中程度に複雑なプロジェクト/ビジネスソリューションを開発していると仮定すると、Grokは言います。これらのフレームワークはWSGIをサポートしていますが、これらのフレームワークを使用している人はWSGIを学ぶ必要があるということですか?ほとんどの場合、答えは「いいえ」です。この知識が間違いなくあればいいのです。

WSGIの知識は、おそらく次のような場合に役立ちます。

  • たとえば、標準スタックの一部として提供されていないミドルウェアまたはその他のコンポーネントを使用する場合。 TGまたは GrokなしZODB のAuthkit。
  • 何らかの統合を行っています。

CherryPyは良いですが、トランザクションの最後でデータベースのコミット/ロールバックを処理し、json、そのような場合の検証、TGを公開することを考えてくださいDjangoフレームワークがあなたのためにそれをするように。

0
Shekhar

私はTurboGearsのファンです。これがまさにその理由です。制御と正しいことと簡単なことの間の非常に良いトレードオフです。

もちろん、自分で決めなければなりません。たぶん、あなたはもっと少なく、もっと多くを学びたいと思うでしょう。おそらく、私が知識/管理(データベースなど)が好きな分野は、それほど気にすることはできません。誤解しないでください。私はフレームワークを必ずしも難しいか間違っているとは言っていません。主観的な判断です。

また、可能な限りTurboGears 2をお勧めします。それが出てきたら、デフォルト(genshi、パイロン、SqlAlchemy)に選択したものに関しては1.0よりもはるかに優れていると思います

0
Dan