ホームページ  >  記事  >  バックエンド開発  >  Python の Tornado フレームワークを使用して Web サイドの書籍表示ページを実装する

Python の Tornado フレームワークを使用して Web サイドの書籍表示ページを実装する

WBOY
WBOYオリジナル
2016-08-04 08:55:531912ブラウズ

まず第一に、Tornado を選ぶ理由:
1. gevent、Twisted、libevent などと組み合わせられる高性能ネットワーク ライブラリ。
非同期IOサポート、タイムアウトイベント処理を提供し、これに基づいてtcpserver、httpclient、特にcurlhttpclientを提供します
既存の http クライアントの中で間違いなく 1 位にランクされます。クローラーやゲームサーバーに使用できます。私の知る限り、業界ではゲームサーバーとして Tornado が使用されています

2. Django や Flask と比較できる Web フレームワーク。
ルーティングやテンプレートなどの Web フレームワークの重要なコンポーネントを提供します。他のものとの違いは、Tornado は非同期であり、当然ながら長期ラウンドのトレーニングに適していることです
これは、friendfeed が tornado を発明した理由でもあります。 現在は flask でもサポートできますが、gevent などを使用する必要があります。

3. nginx や Apache と比較できる、比較的完成度の高い http サーバー

ただし、http1.0 のみをサポートしているため、フロントエンドに nginx を使用することは、マルチコアを有効に活用するだけでなく、http1.1 をサポートすることにもなります

4. 完全な wsgi サーバー。これは gunicore、gevent wsgi サーバーと比較できます。 言い換えれば、フラスコはトルネードで実行でき、トルネードはフラスコをスピードアップできます


5. HTML5 ゲームなどを容易にする完全な WebSocket サポートを提供します。

たとえば、Zhihu の長い回転トレーニングでは WebSocket を使用しますが、WebSocket の携帯電話のサポートはあまり良くありません

少し前まで、大量のリクエストを送信するにはスケジュールされた Ajax を使用する必要がありましたが、モバイル ブラウザーもすぐに追いつくことを願っています

トルネードを使って簡単な本の紹介ページを作成します

さて、本題に取り掛かりましょう。この本の紹介ページのコード実装を見てみましょう:
1. Webサービスエントリファイルblockmain.pyを作成します


リーリー

基本的な MVC 概念をいくつか説明します: Tornado は、ユーザーの入力を照合してパラメーターを取得するために pathinfo モードも使用し、その後、さまざまな照合モードに対応するクラス クラスを設定することによって処理されます。たとえば、/get からのデータを処理するためにクラス MainHandler を使用します。リクエスト

MainHandler はリクエストを Index.html にレンダリングし、パラメータは Index.html の {{parameters}} を通じて呼び出されます

2. 対応するテンプレートを作成します。まず、基本的な親クラスの main.html テンプレートを作成し、その下に main.html を作成します。このテンプレートは最も基本的な Web ページのフレームワークのみを定義し、内部の特定のコンテンツは継承されます。サブクラスから具体的に実装する


リーリー

これは定義されたメインフレームワークです。{% block header %}

Burt's Books

{% end %} は、サブクラスがこの main.html を継承するときに、サブクラスのテンプレートを継承するためのブロックです。このブロックに記述されたコンテンツはサブクラスによって実装されます。実装されていない場合は、親クラスのデフォルト値が使用されます。たとえば、ここでは、MainHandler クラスがレンダリングされます。 Index.html を作成し、この親クラスを継承する Index.html を作成します


リーリー

シンプルかつ簡潔、これは継承を使用する利点でもあります。親クラスを繰り返す必要はなく、親クラスのブロック コンテンツを実装するだけで済みます。 MainHandlerクラスのrenderメソッドのパラメータ


リーリー

パラメータを介してここに送信されます
tornadoテンプレート内でPythonコードを使用することができ、whileなどにifを使用する場合は最後に{% end %}を追加します コードでは、{% module Book(book) %} は、エントリ サービス ファイル内の定義と 'Book' に対応するモジュールを呼び出します

ui_modules={'Hello':HelloModule,'Book':BookModule} は BookModule です。上記の BookModule 定義を確認してください

リーリー

BookModule は tornado.web.UIModule から継承しています。UI モジュールの使用は、オブジェクトをテンプレートにレンダリングするための最後の render_string() メソッドです。ここでは単純に Douban の書籍 API を使用し、最初に Ci の書籍情報を含むキーをクエリします。最初の書籍の ID を取得し、書籍 API を使用して書籍の特定の情報をクエリし、この特定の書籍の情報を対応するテンプレートにレンダリングします
templates ディレクトリの下に modules ディレクトリを作成し、book.html を作成します。これが book に表示される具体的なコンテンツ フレームワークです。 リーリー


最終的なファイルディレクトリ構造は次のようになります

リーリー プログラムの実行は次のようになります:

まず、MainHandler クラスを使用して、パス '/'---->index.html から main.html を継承---->index.html 内の {% module Book(book) %} を介して、index.html にアクセスします。逆も同様です。blockmain.py で Book に対応する ui_modules を見つけます。---> ui_modules 内のクエリされたブック オブジェクトのコンテンツをモジュールの下の book.html にレンダリングします。これにより、フロント エンドを実行せずに完全なコンテンツが表示されます... 開始Python blockmain.py を通じてサービスにアクセスし、http://localhost:8000 を通じて次の Web ページにアクセスします



2016711175031811.png (913×639)

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。