ローカルWebアプリに推奨されるPythonライブラリ/フレームワーク?



python 外部ライブラリ おすすめ (8)

Pylonsは簡単な設定ができれば非常に使いやすいので、何をしたいのかをよく知っておく必要があります。

私はPythonで簡単なLOCALウェブアプリを作りたいです。

Webサーバーと「バックエンド」コードは、UIと同じシステム(最初はWindowsシステム)で実行されます。 私はそれが問題であることを疑うが、UIはグーグルクロム、HTML、CSS、JavaScriptとjQueryの典型的なWebishのコンボになるでしょう。

PythonベースのWebプログラミングフレームワークは多数ありますが、それらはすべて、多くのバックエンドインフラストラクチャを備えた高度で大規模なアプリケーションを構築するために設計されているようです。 私はその逆を望んでいます。非常にシンプルで軽量、そして簡単に自己完結型のもの - ローカルWebアプリケーションを作成/サポートするのに十分なWebサーバーとフレームワーク。

提案?


標準ライブラリ内の非常にシンプルなサーバーはwsgiref.simple_serverです。

例は簡単に見えます( demo_appもモジュールの一部です)。

from wsgiref.simple_server import make_server, demo_app

httpd = make_server('', 8000, demo_app)
print("Serving HTTP on port 8000...")

# Respond to requests until process is killed
httpd.serve_forever()

Bottleは非常に軽量のマイクロフレームワークです。 外部の依存関係のない単一の.pyファイルとして提供され、ルーティング、小型のテンプレートエンジンをサポートし、統合されたWebサーバーが付属しています。 使いやすくてスリムです。

これはあなたの要求に完璧にマッチするように思えます:)


私がこの質問をして以来、私はそのような「ローカルWebサーバー」アプリを一握りで書いてきました。 私は最終的な「どのフレームワークが最善か」という答えはありませんが、いくつかの洞察があります。

  1. シンプルまたはマイクロフレームワークは確かに良い選択です。
  2. 私はCherryPyとFlaskフレームワークを試しました。 Flaskは基本的な "AJAXサービングページを設定する"機能がFlaskで書くのがまったく簡単なので、単純さの点で明らかに勝者です。 CherryPyドキュメンテーションはしばしば不透明であり、そしてそのセットアップの複雑さは著しく高い。
  3. Flaskには満足していますが、見回し続けています。 私は特に他のの議論とこの並んでの比較を含めて、非常に高くレビューされているBottleを試してみたいと思いslideshare.net/r1chardj0n3s/web-microframework-battle試してみる価値があります。

どんなフレームワークでもこれを行います。 Djangoは確かにそうするでしょう、しかし、あなたはもっと小さいものが欲しいので、私はBFG / Pyramidを使うことを勧めます。 しかし、他にもたくさんのものがあり、前述のように、組み込みのwsgirefはあなたが得るのと同じくらい軽量です。 :-)



たぶん、あなたはいくつかのデータベーステーブルで基本的なCRUD操作のための管理者インターフェースが欲しいです。 それならDjangoがあなたの最良の選択です。


私はこの目的のためにBaseHTTPServerを使用しました。 これは、Python標準ライブラリに組み込まれているWebサーバーであり、配信するコンテンツを完全に管理できます。

これはPythonの標準ライブラリの一部なので、プラットフォーム固有の設定について心配する必要はありません。 私は、Windows、Linux、およびMac OS Xシステムで同じローカルサーバースクリプトを変更せずに使用しました。

サンプルのコードは次のようになります。

import BaseHTTPServer

class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()
        self.wfile.write("Hello world!")

server_address = ('', 8080)
httpd = BaseHTTPServer.HTTPServer(server_address, Handler)
httpd.serve_forever()




self-contained