目次
my_uimodules.py
<div>    <a href="/">主页</a>    <a href="/page1">页面1</a>    <a href="/page2">页面2</a>    <span>你现在处于页面 {{ location }}</span></div>
ログイン後にコピー
" >
<div>    <a href="/">主页</a>    <a href="/page1">页面1</a>    <a href="/page2">页面2</a>    <span>你现在处于页面 {{ location }}</span></div>
ログイン後にコピー
tornado が設定を初期化するときに、カスタム テンプレートが配置されているモジュールが設定で指定されます
home.html
ホームページ ウェブフロントエンド htmlチュートリアル 2_html/css_WEB-ITnose を使用した竜巻概要 4-html テンプレート

2_html/css_WEB-ITnose を使用した竜巻概要 4-html テンプレート

Jun 24, 2016 am 11:18 AM

参考アドレス

http://www.tornadoweb.org/en/stable/guide/templates.html?highlight=render#ui-modules


目的の説明

すべての上部にこのナビゲーションバーがありますosc のページでは、tornado の UI モジュールを使用してナビゲーション バーを実装し、コードの再利用を実現できます


コード構造

tornado テンプレートの uimodules を含む my_uimodules.py を追加し、Header.html を追加しました。ナビゲーション バーの HTML コード。単純な HTML ページ page2.html を返すために、page2.py が追加されます。


実際の実行効果

パス "/" にアクセスしたときの効果

ナビゲーション リンクをクリックします。 「ページ 1」の効果

ナビゲーション リンク「ページ 2」をクリックした場合の効果


コードの説明

my_uimodules.py

import tornado.webclass HeaderBar(tornado.web.UIModule):    def render(self, location):        return self.render_string("header.html", location=location)class HeaderBar2(tornado.web.UIModule):    def render(self, location):        return self.render_string("header.html", location=location)
ログイン後にコピー

すべてのテンプレート ドライバーは tornado.web.UIModule から継承され、その後call render_string 指定したテンプレートとパラメータを呼び出します。ここではトップ ナビゲーション バーとサイド ナビゲーション バーを記述できます。ここでは、パラメータの場所を受け入れます。これは、ナビゲーション バーのページの説明として使用されます。このテンプレート ドライバーは header.html を返し、それに場所を渡します

header.html

<div>    <a href="/">主页</a>    <a href="/page1">页面1</a>    <a href="/page2">页面2</a>    <span>你现在处于页面 {{ location }}</span></div>
ログイン後にコピー

このテンプレート ファイルは、ページの上部のナビゲーション バーとして機能し、現在のページは location パラメーターを通じて取得されます。


main.py

import osimport tornado.httpserverimport tornado.ioloopimport tornado.webimport my_uimodulesfrom handlers.home import HomeHandlerfrom handlers.page1 import Page1Handlerfrom handlers.page2 import Page2Handlerclass PageNotFoundHandler(tornado.web.RequestHandler):    def get(self):        return self.write_error(404)class Application(tornado.web.Application):    def __init__(self):        handlers = [            (r"/", tornado.web.RedirectHandler, {"url": "/home"}),            (r"/home", HomeHandler),            (r"/page1", Page1Handler),            (r"/page2", Page2Handler),            (r".*", PageNotFoundHandler),        ]        settings = dict(            static_path= os.path.join(os.path.dirname(__file__), "static"),            template_path=os.path.join(os.path.dirname(__file__), "templates"),            ui_modules=my_uimodules,        )        tornado.web.Application.__init__(self, handlers, **settings)if __name__ == "__main__":    port = 8899    application = Application()    http_server = tornado.httpserver.HTTPServer(application, xheaders=True)    http_server.listen(port)    print('Listen on http://localhost:{0}'.format(port))    print('Listen on http://localhost:{0}/page1'.format(port))    print('Listen on http://localhost:{0}/page2'.format(port))    tornado.ioloop.IOLoop.instance().start()
ログイン後にコピー

tornado が設定を初期化するときに、カスタム テンプレートが配置されているモジュールが設定で指定されます

"ui_modules=my_uimodules"

tornado がテンプレートを処理しているときに、次のような場合に発生します。ステートメントを実行すると、xxxx テンプレート ドライバーを見つけるために設定した ui_modules モジュールに移動します

{% module xxxx %}
ログイン後にコピー

ページ コード

home.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>主页</title></head><body>    {% module HeaderBar("主页") %}    <h1 id="home_head">这是主页</h1>    <script src="/static/js/home.js"></script></body></html>
ログイン後にコピー

page1.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>{{ argu1 }}</title></head><body>    {% module HeaderBar("页面1") %}     <h1>这是Page1</h1>     <ul>       {% for i in argu2 %}         <li>{{ i }}</li>       {% end %}     </ul></body></html>
ログイン後にコピー

page2.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Page2</title></head><body>    {% module HeaderBar("页面2") %}     <h1>这是Page2</h1></body></html>
ログイン後にコピー

全ページA

{% module HeaderBar("Page 2") %}

がテンプレート本体の最初の行に追加されます。前述したように、tornado はレンダー テンプレートを処理するときにこの形式のリクエストに遭遇すると、次のヘッダーバーを検索します。 ui_modules で指定されたモジュール my_uimodules を最初のパラメータとして渡し、HeaderBar はこのパラメータを header.html の場所として渡します このように、各ページの上部にあるナビゲーション バーは同じです。違いが反映されます。


コード git アドレス

http://git.oschina.net/donggen/tornado-test







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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

HTMLは初心者のために簡単に学ぶことができますか? HTMLは初心者のために簡単に学ぶことができますか? Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

&lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLでの開始タグの例は何ですか? HTMLでの開始タグの例は何ですか? Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

See all articles