2012-05-02 13 views
2

私は写真とテキストプログラムのための50mbのpython Graduated interval recall評価システムをWebサイトベースのアプリケーションに変換しているプロジェクトに取り組んでいます。 (そしてその周りにウェブサイトをデザインする)データベースに接続してユーザ情報を頻繁に保存する必要があるため、サーバ側を正しく実行する必要がありますか?私が何も知らないと仮定すると、これを完了するための最良の構造は何ですか?多くの異なる選択肢のように見え、私は失われたと感じます。PythonプログラムからWebアプリケーションへ

私は元のPythonコードのWeb UIを作成するためにCGIを使用してきました。これは実装することさえ可能ですか?

何ピラミッド/ uWSGI /パイロン/フラスコ

またはジャンゴ はどうですか? (私はこのプロジェクトのためにそれを控えるように言われましたが)

+0

cgiでなければならない場合、 'mod_wsgi'などは、Webサーバー上で非常に薄いラッパー(スレッドプールなど)を提供します。 – ChristopheD

答えて

1

パイロンはかなり良いと言われましたが(新しいピラミッド)、私は個人的にはDjangoを使用しています。それは私が作ったのと同じ間違いだからCGIを使用しようとしないでください。そして、後でhtmlをすべて変更することはお尻の痛みでした。

0

Djangoには、現在のデータベースの初期モデルを作成するのに役立つコマンド(./manage.py inspectdb)があります。データベースを再設計することを決定した場合でも、データを新しいスキーマに簡単に移動することができます。個人的には、私はDjangoが好きですが、他の人達はあなたのアプリケーションに非常に適しているかもしれません。

サーバに返信するには、おそらくAJAXを使用します。

0

私はDjangoが自分のニーズにあまりにも重すぎると判断しました。
私はあなたのプロジェクトの記述がかなり曖昧であるため、まあ、あなたに良いアドバイスを与えることは難しいかもしれCherryPy, a minimalist Web Framework

7

との良好な成功を収めてきました - 世界で「50メガバイトパイソンが何であるかを間隔リコールの評価を卒業写真とテキストプログラムのためのシステム "??? :) - しかし私はあなたがリストしているオプションの違いを概説しようとします:

Djangoは、統合ソリューションの一種です - それは、テンプレートシステム、ORM、フォームフレームワークなどがあります。

Djangoは、すべてが密接に結びついているため、組み込みの管理インタフェースやプラグイン可能なアプリケーションなど、いくつかの細かい点を提供しています。あなた自身でそれらのものを構築する必要があります。たとえば、Djangoでブログサイトを構築するには、データベースモデル、ルート、いくつかのビューを定義する必要があります。組み込みの管理インターフェースを使用してブログエントリを追加および編集し、プラガブル認証モジュール。

Djangoは、Django ORMを使用してモデルを定義し、Djangoテンプレートを使用してテンプレートを書き込む必要があるため、DjangoはDjangoが提供するテクノロジをある程度使用する必要があります。 他のものとは別のビットを入れ替えることができますが、他のフレームワークではうまく動作しません - SQLAlchemyなどの別のORMを使用してデータベースにアクセスできますが、Djangoの管理者インタフェース。

Djangoはある程度、データベーステーブルの特定の構造(つまり、Pythonコードで定義されたモデルに基づいてこれらのテーブルを作成できることを期待しています)を期待しています。また、私はそれを理解しては、あなたはSQLデータベースを持っていることを期待しています。

私の意見では、Djangoは、既存のplugabbleアプリケーションやその他のDjango機能を利用できる「典型的な」Django Webサイト(ニュースサイト用に構築されたもの)を構築するための非常に良い選択です。一方、

ピラミッド、、データベースアクセスのための任意の特定の技術を使用する必要はありません - 実際には、それは、すべてのデータベースを持っているあなたを必要としない - あなたはデータで動作するアプリケーションを構築することができますZODBや分散型NoSQLストレージなどのオブジェクトデータベースに格納されています。たぶん一部のXMLファイルと画像の束...あなたの想像力はあなたの限界です

SQLデータベースを使用する場合、データベースには特定の構造があるとは限りません。また、推奨されるPyramidのORMは、Djangoよりも柔軟で強力です。ORM

特定のテンプレートライブラリやフォームライブラリを使用する必要がないため、必要に応じて最適なものを選択できます。

ピラミッドでは、ほとんどのWebフレームワークの基礎となるルートマッピングを使用する必要はありません。ルートマッピングに加えて、PyramidはURLトラバーサルをサポートしています。これは、階層データ構造を扱う非常に強力な方法です。

Pyramidでは、特定のテクノロジを使用する必要はありませんが、一般的な使用例についてはいくつかのテンプレートが用意されています。

Pyramidの優れたWSGIサポートがそれを活用するにもかかわらず、非常にカスタムのPyramidウェブサイトに変更することなく既存の「アプリ」を見つけるのは難しいかもしれません。

Pylonsは、プロジェクトが後でrepoze.bfgとマージされた後、Pyramidと呼ばれています。

uWSGIはピラミッドのアプリケーション(または他のWSGI準拠のアプリケーション)を提供するためにアプリケーション/プロトコルの詳細です

フラスコ - 多分他の誰かがあなたにいくつかの概要を与える、それを使ったことがありません。

要するに、DjangoとPyramidの選択肢は、「あなたのDjangoの組み込み機能を私のサイトでどれくらい使うことができるか」という質問に沸きます。自動管理者やサードパーティのプラグイン可能なアプリケーションを大量に使用する - その他はピラミッドの方が優れています:)

+0

全体的な答えが素晴らしい。 –

1

アプリケーションが既に存在するデータベースと対話する必要がある場合、djangoは貴重なIMOを購入しません。 DBスキーマがdjangoが期待するもの(自動インクリメントintプライマリキーなど)に従わない限り、管理インターフェースはその部分では機能しないため、予想されるスキーマを想定する他のWebフレームワークも同様です。

それでは、sqlalchemyが最適です。それはorm層を持っていますが、あなたはそれを使う必要はありません。単にクエリインタフェースを使うだけで、多くの価値を得ることができます。

webframeworksが実行される限り、これはsqlalchemyを使用できるものに絞っています。これは、上記の理由から、Django、Zope、おそらくweb2py以外のものです。 Zopeにとっては価値があるのは、それがzodbに裏打ちされているという事実に由来します。しかし、zodbはあなたの既存のデータベースとデータであなたを助けるつもりはありません。

Webフレームワークの中で、選択基準を使用するのは、要求をビューにルーティングする能力です。そして、それがあなたのURL生成戦略とどのくらい一致するか。 IMO、ピラミッドはこの領域で非常に柔軟です。しかし、あなたはそれを必要としないかもしれません。あなたはフラスコやボトルで手に入ることができるかもしれません。またはまっすぐwebob。

別のわずかに少ないの重要な基準は、テンプレートエンジン/言語であり、ほとんどのフレームワークは、Jinja2のなどのような、より人気のあるものを、サポートします...

それはスーパー毛深いに超簡単からうまくスケールするので、私の個人的な選択は、ピラミッドですリクエストルーティング部門でしかし、再び、あなたのURLをどのように働かせるかによっては、必要ないかもしれません。

関連する問題