01:シングルファイルWebアプリケーション(01: Single-File Web Applications)

ピラミッドを始めるにあたって最も簡単な方法は何ですか?単一ファイルのモジュールです。pip install -e . は不要で、Pythonのパッケージはいりません。ほかの仕組みも不要です

バッググラウンド(Background)

マイクロフレームワークは次のキラキラなものがでるまで大流行していました。「マイクロフレームワーク」はマーケティング用語であり、技術的なものではありません。彼らは精神的なオーバーヘッドが低くて少ししか持っていないので、心配する必要があるのはあなたのものだけです。

Pyramidは単一ファイルモジュールのマイクロフレームワークとして機能できるため特別です。単一のPythonファイルをPythonで直接実行できます。しかし、Pyramidは大規模アプリケーションに対応するための機能も備えています。

Pythonには、PythonのWebアプリケーションを標準サーバーに組み込む方法、渡されたリクエストを取得する方法、レスポンスを返す方法を定義する WSGI という標準があります。最近のPythonのwebフレームワークのほとんどは、モデル内のデータに外部システムとの対話を媒介するビューがある「MVC」(モデルビューコントローラ)アプリケーションパターンに従います。

このステップでは、WSGIサーバー、WSGIアプリケーション、リクエスト、レスポンス、およびビューについて簡単に見ていきます。

目標(Objectives)

  • できるだけ簡単に、実行中のPyramid Webアプリケーションを入手してください。
  • これを複雑なユニットを追加するために、よく考えられたベースとして使用してください。
  • WSGIのアプリ、リクエスト、ビュー、およびレスポンスに対する最初の公開。

手順(Steps)

  1. 要件(Requirements) の手順に従っていることを確認してください。

  2. ワークスペースディレクトリ (~/projects/quick_tutorial)から、今回の手順のディレクトリを作成します。

    $ cd ~/projects/quick_tutorial; mkdir hello_world; cd hello_world
    
  3. 以下をコピーして hello_world/app.py に含めてください:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    from waitress import serve
    from pyramid.config import Configurator
    from pyramid.response import Response
    
    
    def hello_world(request):
        print('Incoming request')
        return Response('<body><h1>Hello World!</h1></body>')
    
    
    if __name__ == '__main__':
        with Configurator() as config:
            config.add_route('hello', '/')
            config.add_view(hello_world, route_name='hello')
            app = config.make_wsgi_app()
        serve(app, host='0.0.0.0', port=6543)
    
  4. アプリケーションを実行します:

    $ $VENV/bin/python app.py
    
  5. ブラウザで http://localhost:6543/ を開きます

分析(Analysis)

Python Webプログラミングは初めて? そうであれば、モジュール内のいくつかの行に説明があります:

  1. 11行目 if __name__ == '__main__': はモジュールとしてインポートの時ではなく、「コマンドラインから実行するときにここからスタート」、というのがPythonの方法です。':
  2. 12-14行目context manager でPyramidの configurator を使用して、 view コードを特定のURL route に接続します。
  3. 6-8行目  response を生成するビューコードを実装します。
  4. 15-17行目。HTTPサーバーを使用して WSGI アプリケーションを公開します。

この例に示すように、 configurator はPyramidの開発において中心的な役割を果たします。 (機械翻訳) アプリケーション構成 で疎結合のパーツからアプリケーションをビルドする ことはPyramidの中心的なアイデアです。この クイックチュートリアル では定期的に再考します。

エクストラクレジット(Extra credit)

  1. どうしてこれを行うのでしょうか:

    print('Incoming request')
    

    以下の代わりに:

    print 'Incoming request'
    
  2. HTMLの文字列を返すとどうなりますか?整数のシーケンスでは?

  3. print xyz のような view関数を加えた場合は。 ctrl-C でKillを行い、 python app.py で再起動してから、ブラウザをリロードしてください。コンソールの例外を参照してください。

  4. The GI in WSGI stands for "Gateway Interface". What web standard is this modelled after?