私があなたなら、おそらく最初にDjangoに基づくWebベースのソリューションがうまくいくかどうかを調べます。ルックアンドフィールを少し改善する必要がある場合は、jQueryをミックスに追加します。機能が少なすぎる場合は、PyQtを選択してください。非常に小さなアプリケーションがたくさんある場合は、さまざまなテクノロジーを組み合わせてください。以下に、この推奨の私の(やや長い)理由を示します。
Webアプリケーションとデスクトップアプリケーション
1年前、ビジネスデータベースがあり、フロントエンドが必要でした。フロントエンドに使用するテクノロジーを決定する必要がありました。私たちは考えました:
- PyQt
- Webベース(PythonのWebフレームワークの概要についてはこちらをご覧ください)
私たちの観点から見たPyQtの利点:
- Qtがタスクに適していることがわかったQtの以前のC++の経験。
- 必要なすべてのツールが含まれています。
- リッチクライアントの開発が簡単です。
ただし、PyQtに反対し、代わりにWebベースのソリューションを選択しました。理由は次のとおりです。
- フロントエンドの要件は控えめで、ブラウザー内で簡単に実行できました(ほとんどの場合、レポート、データの入力または機能の実行のためのいくつかのフォーム)。
- すべてが制御された環境のサーバーでのみ行われるため、アプリケーション(および新しいバージョン、バグ修正など)の展開ははるかに簡単です。
- アクセス制御/認証/権利は、サーバー(この場合はActive Directory認証を使用するApache)とブラウザーの一部であるため、「無料」です。これは私たちにとって重要です。
- アプリケーションはとにかくサーバー接続を必要とし、クライアント側に何も保存する必要はありませんでした。
一言で言えば、制御された展開環境で多くの機能を備えた機能豊富なフロントエンドは、おそらくQtを使用して実装する方が簡単です。軽量のフロントエンドの場合、サーバーベースのソリューションの方が優れているように見えました。
どのWebフレームワークですか?
テクノロジーを決定したので、フレームワークを選択する必要がありました。少し調べて、2つの選択肢を詳しく調べました。
- Django
- ディスパッチャとしてのCherryPy(httpリクエストを機能および関連するすべてのものに一致させるため)、Webページを生成するためのテンプレートライブラリとしてのMako、ORMとしてのSQLAlchemy 、およびクライアント側機能のためのjQueryで構成されるソフトウェアのスタック。
2つの選択肢を評価し、最後に2番目の選択肢を決定しました。この決定は、私たちの本当に「軽量-軽量」なフロントエンド要件(多くの非常に小さなアプリケーション)によって推進されました。必要に応じて組み合わせることができるソフトウェアのスタックは、私たちにとってはより良いように思えました。Webフロントエンドが不要な状況や、テンプレートライブラリやORMなしでCherryPyを使用できる状況などで、SQLAlchemyを再利用できます。ただし、他の多くの場合、このスタックではなくDjangoを選択します。
総括する:
- 1つの大きくて複雑なアプリケーション->PyQt
- 1つのルックアンドフィールを備えた比較的類似した戦略的なレポート、フォームなどのセット-> Django
- 要件が大きく異なり、テクノロジーを使用したり、他の状況で一部のテクノロジーを再利用したりする、比較的多様なもののセット->必要に応じてテクノロジーを組み合わせる