2

私は、写真とテキストプログラム用の50mbpython段階的間隔想起評価システムをWebサイトベースのアプリケーションに変換するプロジェクトに取り組んでいます。(そして、その周りにWebサイトを設計します)ユーザー情報を頻繁に保存するためにデータベースに接続する必要があるため、サーバー側で正しく実行する必要がありますか?私が何も知らないと仮定すると、これを完了するための最良の構造は何ですか?いろいろな選択肢があるようで、迷ってしまいました。

私はCGIを使用して、元のPythonコードのWebUIを作成してきました。これを実装することも可能ですか?

ピラミッド/uWSGI/パイロン/フラスコはどうですか

またはDjango?(このプロジェクトでは控えるように言われましたが)

4

5 に答える 5

7

プロジェクトの説明が非常に曖昧であるため、適切なアドバイスを与えるのは難しいかもしれません。「画像とテキスト プログラムのための 50 MB python 段階的間隔リコール評価システム」とは一体何なのでしょうか? :) -しかし、あなたがリストしているオプションの違いを概説しようとします:

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

これらはすべて密接に結びついているため、Django は組み込みの管理インターフェイス、プラグイン可能なアプリなどの優れた機能を提供します。これらを構築する必要がないため、従来の Web サイトの開発を簡単に開始できます。自分自身のもの。たとえば、Django でブログ サイトを構築するには、データベース モデル、いくつかのルート、およびいくつかのビューを定義する必要があります。それだけです。組み込みの管理インターフェイスを使用してブログ エントリを追加および編集し、プラグ可能な認証モジュール。

しかし、もちろん代償もあります。これらすべての要素が確実に連携するようにするために、Django ではある程度、Django が提供するテクノロジを使用する必要があります。つまり、Django ORM を使用してモデルを定義し、Django テンプレートを使用してテンプレートを作成する必要があります。異なるビットを別のものに交換することはできますが、フレームワークの残りの部分ではうまく機能しないことは理解できます。つまり、SQLAlchemy などの別の ORM を使用してデータベースにアクセスできますが、そのようなモデルは Django の管理インターフェイスでは機能しません。

ある程度、Django はデータベース テーブルの特定の構造を想定しています (つまり、Python コードで定義されたモデルに基づいてこれらのテーブルを作成できると想定しています)。これにより、既存のデータベースでの作業がより困難になります。また、 SQL データベースが必要であると理解しています。

したがって、私の意見では、Django は、既存のプラグアブル アプリやその他の Django 機能を利用できる「典型的な」Django Web サイト (ニュース Web サイト用に作成されたもの) を構築するのに非常に適しています。

一方、 Pyramid では、データベース アクセスに特定のテクノロジを使用する必要はありません。実際、データベースを用意する必要はまったくありません。ファイル システムに格納されたデータを操作するアプリケーションを、 ZODB や分散 NoSQL ストレージなどのオブジェクト データベース。たぶん、いくつかの XML ファイルとたくさんの画像でさえ...あなたの想像力はあなたの限界です

SQL データベースを使用する場合、データベースが特定の構造を持つことは想定されていません。また、推奨される Pyramid の ORM である SQLAlchemy は、Django ORM よりも柔軟で強力であると考えられています。

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

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

特定の技術を使用する必要はありませんが、Pyramid は典型的なユースケース用の適切なテンプレートをいくつか提供しています。

この柔軟性の代償は、変更なしで非常にカスタムな Pyramid Web サイトにプラグインできる既存の「アプリ」を見つけるのがより困難になる可能性があることです - ただし、Pyramid の優れた WSGI サポートはそれを活用します。

しばらく前にプロジェクトが repoze.bfg とマージされた後、Pylonsは現在 Pyramid と呼ばれています。

uWSGIは、Pyramid アプリケーション (または他の WSGI 準拠アプリケーション) を提供するためのアプリケーション/プロトコルのようなものです。

フラスコ- 使用したことはありません。他の誰かが概要を教えてくれるかもしれません。

つまり、要するに、Django と Pyramid のどちらを選択するかは、「自分のサイトで Django の組み込み機能をどれだけ使用できるか」という質問に要約されます。サードパーティのプラグ可能なアプリを多用する - 他のすべては Pyramid の方が優れています :)

于 2012-05-02T07:49:07.877 に答える
1

私は pylons はかなり良い (新しいピラミッド) と言われていますが、私は個人的に Django を使用しており、非常に満足しています。CGI を使おうとさえしないでください。それは私が犯したのと同じ間違いだからです。後で、すべての html を変更するのは骨の折れる作業であることがわかりました。

于 2012-05-02T05:35:55.240 に答える
1

アプリケーションが既に存在するデータベースと対話する必要がある場合、django は IMO に大きな価値をもたらしません。dbスキーマがdjangoが期待するもの(自動インクリメントint主キーなど)に準拠しない限り、管理インターフェースはその部分では機能しないため、期待されるスキーマを想定する他のWebフレームワークにも同じことが当てはまります。

したがって、sqlalchemy が最善の策です。orm レイヤーがありますが、それを使用する必要はありません。クエリ インターフェイスを使用するだけで、十分な費用を得ることができます。

したがって、webframeworks に関する限り、それは sqlalchemy を使用できるものに絞り込まれます。上記の理由により、これは Django、Zope、そしておそらく web2py 以外のものです。Zope の場合、その価値は、zodb によってサポートされているという事実からいくらか得られます。しかし、zodb は、既存のデータベースとデータに関してはまったく役に立ちません。

したがって、Web フレームワークに残されたもののうち、私が選択基準として使用するのは、リクエストをビューにルーティングする機能です。そして、それがあなたの URL 生成戦略とどの程度一致しているか。IMO、ピラミッドはこの分野で非常に柔軟です。しかし、あなたはそれを必要としないかもしれません。フラスコやボトルで十分な場合があります。またはまっすぐなウェボブ。

もう 1 つのやや重要でない基準は、テンプレート エンジン/言語です。ほとんどのフレームワークは、jinja2 などのより一般的なものをサポートします...

私の個人的な選択は、要求ルーティング部門で非常に簡単なものから非常に複雑なものまでうまくスケーリングできるピラミッドです。ただし、URL をどのように機能させたいかによっては、必要ない場合もあります。

于 2012-05-02T13:05:23.860 に答える
0

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

サーバーと通信するには、おそらく AJAX を使用できます。

于 2012-05-02T06:10:13.490 に答える
0

私のニーズには Django が重すぎることがわかりました。ミニマルな Web フレームワークである CherryPy で
成功を収めました

于 2012-05-02T06:30:43.273 に答える