8-tornado中模板的使用(通過字符串返回、通過模板Template返回、通過模板render返回)、模板案例

1 Template

1.1 通過字符串返回

import tornado
class IndexHandler(web.RequestHandler):def get(self):arg = 'Template'self.finish(f'<h1>Hello {arg}!!</h1>')

1.2 通過模板Template返回

tornado.template

一個簡單的模板系統,將模板編譯為Python代碼。
基本用法如下

class IndexHandler1(web.RequestHandler):def get(self):arg = 'Template1't = template.Template(f'<h1>Hello {arg}!!</h1>')self.finish(t.generate())class IndexHandler2(web.RequestHandler):def get(self):arg1 = 'Template2't = template.Template('<h1>Hello {{arg}}!!</h1>')self.finish(t.generate(arg = arg1))class IndexHandler3(web.RequestHandler):def get(self):arg1 = 'Template3_file'loader = template.Loader('./templates/')self.finish(loader.load('index.html').generate(arg = arg1))
<!-- templates/index.html -->
<h1>Hello {{arg}}!!</h1>

1.3 通過模板render返回

class IndexHandler4(web.RequestHandler):def get(self):arg1 = 'render_Template3_file'self.render('index.html',arg=arg1)     

2 模板案例

*前端

   <!DOCTYPE html><html><head><meta charset="utf-8"/><title>購物車</title><link rel="stylesheet" type="text/css" href="{{ static_url('css/style.css') }}" /><script src="{{ static_url('js/html5.js') }}"></script><script src="{{ static_url('js/jquery.js') }}"></script><script>$(document).ready(function(){$("nav .indexAsideNav").hide();$("nav .category").mouseover(function(){$(".asideNav").slideDown();});$("nav .asideNav").mouseleave(function(){$(".asideNav").slideUp();});});</script></head><body><!--header--><header><!--topNavBg--><div class="topNavBg"><div class="wrap"><!--topLeftNav--><ul class="topLtNav"><li><a href="login.html" class="obviousText">親,請登錄</a></li><li><a href="register.html">注冊</a></li><li><a href="#">移動端</a></li></ul><!--topRightNav--><ul class="topRtNav"><li><a href="user.html">個人中心</a></li><li><a href="cart.html" class="cartIcon">購物車<i>0</i></a></li><li><a href="favorite.html" class="favorIcon">收藏夾</a></li><li><a href="user.html">商家中心</a></li><li><a href="article_read.html" class="srvIcon">客戶服務</a></li><li><a href="union_login.html">聯盟管理</a></li></ul></div></div><!--logoArea--><div class="wrap logoSearch"><!--logo--><div class="logo"><h1><img src="{{ static_url('img/logo.png')}}"/></h1></div><!--search--><div class="search"><ul class="switchNav"><li class="active" id="chanpin">產品</li><li id="shangjia">商家</li><li id="zixun">搭配</li><li id="wenku">文庫</li></ul><div class="searchBox"><form><div class="inputWrap"><input type="text" placeholder="輸入產品關鍵詞或貨號"/></div><div class="btnWrap"><input type="submit" value="搜索"/></div></form><a href="#" class="advancedSearch">高級搜索</a></div></div></div><!--nav--><nav><ul class="wrap navList"><li class="category"><a>全部產品分類</a><dl class="asideNav indexAsideNav"><dt><a href="channel.html">女裝</a></dt><dd><a href="#">夏裝新</a><a href="#">連衣裙</a><a href="#">T恤</a><a href="#">襯衫</a><a href="#">褲子</a><a href="#">牛仔褲</a><a href="#">背帶褲</a><a href="#">短外套</a><a href="#">時尚外套</a><a href="#">風衣</a><a href="#">毛衣</a><a href="#">背心</a><a href="#">吊帶</a><a href="#">民族服裝</a></dd><dt><a href="channel.html">男裝</a></dt><dd><a href="#">襯衫</a><a href="#">背心</a><a href="#">西裝</a><a href="#">POLO衫</a><a href="#">馬夾</a><a href="#">皮衣</a><a href="#">毛衣</a><a href="#">針織衫</a><a href="#">牛仔褲</a><a href="#">外套</a><a href="#">夾克</a><a href="#">衛衣</a><a href="#">風衣</a><a href="#">民族風</a><a href="#">原創設計</a><a href="#">大碼</a><a href="#">情侶裝</a><a href="#">開衫</a><a href="#">運動褲</a><a href="#">工裝褲</a></dd></dl></li><li><a href="index.html" class="active">首頁</a></li><li><a href="#">時尚搭配</a></li><li><a href="channel.html">原創設計</a></li><li><a href="channel.html">時尚代購</a></li><li><a href="channel.html">民族風</a></li><li><a href="information.html">時尚搭配</a></li><li><a href="library.html">搭配知識</a></li><li><a href="#">促銷專區</a></li><li><a href="#">其他</a></li></ul></nav></header><script>$(document).ready(function(){//測試效果,程序對接如需變動重新編輯$(".switchNav li").click(function(){$(this).addClass("active").siblings().removeClass("active");});$("#chanpin").click(function(){$(".inputWrap input[type='text']").attr("placeholder","輸入產品關鍵詞或貨號");});$("#shangjia").click(function(){$(".inputWrap input[type='text']").attr("placeholder","輸入商家店鋪名");});$("#zixun").click(function(){$(".inputWrap input[type='text']").attr("placeholder","輸入關鍵詞查找文章內容");});$("#wenku").click(function(){$(".inputWrap input[type='text']").attr("placeholder","輸入關鍵詞查找文庫內容");});});</script><section class="wrap" style="margin-top:20px;overflow:hidden;"><table class="order_table"><tr><th><input type="checkbox"/></th><th>產品</th><th>名稱</th><th>屬性</th><th>單價</th><th>數量</th><th>小計</th><th>操作</th></tr>{% set total = 0 %}{% for order in  orders %}<tr><td class="center"><input type="checkbox"/></td><td class="center"><a href="product.html"><img src="{{order['img']}}" style="width:50px;height:50px;"/></a></td><td><a href="product.html">{{order['name']}}</a></td><td><p>{{order['type']}}</p></td>{% if order['price'] < 100 %}<td class="center"><span class="rmb_icon">優惠力度很大</span></td>{% else %}<td class="center"><span class="rmb_icon">{{order['price']}}</span></td>{% end %}<td class="center"><span>{{ order['num'] }}</span></td><!-- <td class="center"><strong class="rmb_icon">{{ order['price']*order['num'] }}</strong></td> --><td class="center"><strong class="rmb_icon">{{ count_price(order['price'],order['num']) }}</strong></td><td class="center">{% raw order['opts'] %}</td>  <!-- html 解析-->{{ total = total + count_price(order['price'],order['num']) }}</tr>{% end %}</table><div class="order_btm_btn"><a href="index.html" class="link_btn_01 buy_btn"/>繼續購買</a><a href="order_confirm.html" class="link_btn_02 add_btn"/>共計金額<strong class="rmb_icon">{{ total }}</strong>立即結算</a></div></section><!--footer--><footer><!--help--><ul class="wrap help"><li><dl><dt>消費者保障</dt><dd><a href="article_read.html">保障范圍</a></dd><dd><a href="article_read.html">退換貨流程</a></dd><dd><a href="article_read.html">服務中心</a></dd><dd><a href="article_read.html">更多服務特色</a></dd></dl></li><li><dl><dt>新手上路</dt><dd><a href="article_read.html">保障范圍</a></dd><dd><a href="article_read.html">退換貨流程</a></dd><dd><a href="article_read.html">服務中心</a></dd><dd><a href="article_read.html">更多服務特色</a></dd></dl></li><li><dl><dt>付款方式</dt><dd><a href="article_read.html">保障范圍</a></dd><dd><a href="article_read.html">退換貨流程</a></dd><dd><a href="article_read.html">服務中心</a></dd><dd><a href="article_read.html">更多服務特色</a></dd></dl></li><li><dl><dt>服務保障</dt><dd><a href="article_read.html">保障范圍</a></dd><dd><a href="article_read.html">退換貨流程</a></dd><dd><a href="article_read.html">服務中心</a></dd><dd><a href="article_read.html">更多服務特色</a></dd></dl></li></ul><dl class="wrap otherLink"><dt>友情鏈接</dt><dd><a href="#" target="_blank">新碼筆記</a></dd><dd><a href="#" target="_blank">DethGhost</a></dd><dd><a href="#">當當</a></dd><dd><a href="#">優酷</a></dd><dd><a href="#">土豆</a></dd><dd><a href="#">新浪</a></dd><dd><a href="#">釘釘</a></dd><dd><a href="#">支付寶</a></dd></dl><div class="wrap btmInfor"><p>? 2060 版權所有 網絡文化經營許可證:浙網文[2060]***-027號 增值電信業務經營許可證:浙B2-200***24-1 信息網絡傳播視聽節目許可證:1109***4號</p><address>聯系地址:北京尚學堂科技有限公司</address></div></footer></body></html>

后端

from tornado import web,template
from tornado import ioloopclass IndexHandler(web.RequestHandler):def count(self,price,num):return price*numdef get(self):orders=[{   'id':1,'name':'MacPro 2060','type':'32G','price':9999,'num':1,'img':'static/img/goods.jpg','opts':'<a href="delete?id=3">刪除</a>'},{'id':2,'name':'HuaWei Mate 2060','type':'512G','price':6666,'num':1,'img':'static/img/goods007.jpg','opts':'<a href="delete?id=3">刪除</a>'},{   'id':3,'name':'Sony耳機','type':'立體混音','price':66,'num':2,'img':'static/img/goods008.jpg','opts':'<a href="delete?id=3">刪除</a>'},]self.render('shop.html',orders=orders,count_price=self.count)settings={'static_path':'./static/','static_url_prefix':'/static2/','template_path':'./templates'
}if __name__ == '__main__':app = web.Application([('/',IndexHandler),],debug=True,**settings)app.listen(8000)ioloop.IOLoop.current().start()ok     

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213457.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213457.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213457.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c 一,二,三維數組的定義和賦值

1. 定義數組必須指定數組的大小&#xff0c;也就是用多少存儲空間來存儲此數組 2.定義數組必須用數組的標準格式定義&#xff1a;數組名下標的形式 3.只有字符串可以用指針來定義 4.可以把c 中一切數和struct 理解為char 數組 比如int 就是4字節的char數組 #include <…

編程語言的演進歷程與未來發展趨勢

第一代 編程語言的發展歷程起源于早期的機器語言階段&#xff0c;這是一種由二進制代碼構成的計算機能夠直接解讀并執行的語言。然而&#xff0c;鑒于其過于復雜且難以理解&#xff0c;故這一時代的語言并不常為人類所采納。 第二代 緊接著產生的第二代語言旨在簡化編程過程…

1001 害死人不償命的(3n+1)猜想

卡拉茲(Callatz)猜想&#xff1a; 對任何一個正整數 n&#xff0c;如果它是偶數&#xff0c;那么把它砍掉一半&#xff1b;如果它是奇數&#xff0c;那么把 (3n1) 砍掉一半。這樣一直反復砍下去&#xff0c;最后一定在某一步得到 n1。卡拉茲在 1950 年的世界數學家大會上公布了…

C++ //習題2.5 請寫出下列表達式的值。

C程序設計 &#xff08;第三版&#xff09; 譚浩強 習題2.5 習題2.5 請寫出下列表達式的值。 (1) 3.5 * 3 2 * 7 - ‘a’ (2) 26 / 3 34 % 3 2.5 (3) 45 / 2 (int)3.14159 / 2 (4) a b (c a 6) 設a的初值為3 (5) a 3 * 5, a b 3 * 2 (6) (int)(a 6.5) % 2 …

UI自動化測試工具的定義及重要性

UI自動化測試工具在現代軟件開發中起著不可或缺的作用。它們能夠提高測試效率、減少人為錯誤、提供全面的測試覆蓋&#xff0c;并支持持續集成。通過有效使用UI自動化測試工具&#xff0c;開發團隊可以提高軟件質量&#xff0c;提供更可靠的應用程序&#xff0c;滿足用戶的需求…

C語言之數組精講(2)

目錄 數組的復制 輸入數組元素的值 對數組的元素進行倒序排列 使用數組進行成績處理 對象式宏 數組元素的最大值和最小值 賦值表達式的判斷 數組的元素個數 結語 數組的復制 我們把數組中的元素全部復制到另一個數組中。 #include<stdio.h>int main() {int i;int…

SwinIR: Image Restoration Using Swin Transformer

SwinIR 簡介 論文地址&#xff1a;SwinIR: Image Restoration Using Swin Transformer 代碼&#xff1a;SwinIR ? 本文提出了一個基于swin transformer的圖像超分模型swinIR。其中SwinIR分為三部分&#xff1a;淺層特征提取、深層特征提取和高質量圖像重建模塊。 現階段問…

WordPress如何通過header給頁面發送原生HTTP頭

在WordPress中&#xff0c;你可以使用header() 函數來發送原生HTTP頭。這個函數通常在主題文件&#xff08;例如header.php&#xff09;或者插件中使用。以下是一個簡單的例子&#xff0c;演示如何在WordPress中使用header() 函數發送原生HTTP頭&#xff1a; <?php // 在主…

19.java程序設計-基于SpringBoot的博客管理系統的設計與實現

摘要 隨著信息技術的迅速發展&#xff0c;博客作為一種重要的信息傳播和交流工具&#xff0c;逐漸在互聯網上占據重要地位。為了滿足用戶對個性化博客管理的需求&#xff0c;本研究設計并實現了一種基于Spring Boot框架的博客管理系統。 本系統通過采用前后端分離的架構&…

【算法題】密鑰格式化 (js)

!](https://img-blog.csdnimg.cn/direct/bf9a3d781a8043c997593260c0a8306f.png) 第一部分的字符可以少于… const str "5F3Z-2e-9w"; const str1 "2-5g-3-J"; function solution(num, str) {const arr str.split("-");const head arr[0];…

【C++11(三)】智能指針詳解--RAII思想循環引用問題

&#x1f493;博主CSDN主頁:杭電碼農-NEO&#x1f493; ? ?專欄分類:C從入門到精通? ? &#x1f69a;代碼倉庫:NEO的學習日記&#x1f69a; ? &#x1f339;關注我&#x1faf5;帶你學習C ? &#x1f51d;&#x1f51d; C11 1. 前言2. 為什么要有智能指針?3. RAII思想…

30.如何在Spring所有Bean創建完后做擴展?

如何在Spring所有Bean創建完后做擴展? 哪里才算所有的bean創建完了。 首先是所有的配置bean會注冊成BeanDefinition 然后根據BeanDefinition進行循環調用一個一個的getBean進行生產。 循環完所有的BeanDefiniton,通過BeanFactory的getBean方法生成所有的Bean 這個循環結…

LightDB - 支持substring_index 函數[mysql兼容]

從 23.4 版本開始&#xff0c; LightDB 支持 mysql 的substring_index 函數。下面對這個函數進行介紹 substring_index(str, delim, count ) 這個函數用于從指定字符串str中返回到達分隔符delim出現次數(count)之前的子字符串。。具體見之后用例&#xff1a; mysql 中介紹&a…

【BUG】微信小程序image不會隨著url動態變化

問題描述&#xff1a; 第一次打開界面&#xff0c;顯示的是默認頭像而不是用戶頭像&#xff0c;似乎image里面的src只要第一次有值就不會再更新了 解決 不要給src里面的變量設置初始值&#xff0c;而是直接賦空值

信息安全、網絡安全和數據安全的相互關系

最近正在開展安全方面的相關工作&#xff0c;因此就對這些概念做了一些分析&#xff0c;參考各種介紹和書籍&#xff0c;結合自身的認識&#xff0c;總結起來如下&#xff0c;信息安全、網絡安全、數據安全和基礎設施安全的關系究竟是什么&#xff0c;信息安全概念最大&#xf…

DevOps搭建(七)-安裝Jenkins詳細步驟

這里我們用Docker進行安裝 1、拉取Jenkins鏡像 Jenkins download and deployment 選擇LTS長期支持的版本,接著點擊Docker鏈接進入 找到上面的版本,并copy拉取鏡像的命令 docker pull jenkins/jenkins:2.426.1-lts 2、docker-compose安裝Jenkins 首先創建安裝目錄/home/f…

STM32 cubeMX 呼吸燈實驗

文章代碼使用 HAL 庫。 文章目錄 一、1.PWM原理二、LED 原理圖三、使用cubemx 配置 led四、PWM 相關函數五、PWM占空比占空比計算六、PWM 呼吸燈重要代碼總結 呼吸燈 一、1.PWM原理 PWM全稱為脈沖寬度調制&#xff08;Pulse Width Modulation&#xff09;&#xff0c;是一種常…

擁有大量蝦皮買家號有哪些好處

擁有眾多Shopee買家賬號&#xff0c;無疑是賣家們獲取極大優勢的一項策略。多賬號的運用不僅有助于賣家在Shopee平臺上獲得更為豐富的流量&#xff0c;更能夠在關鍵詞排名和銷售表現等方面為其帶來顯著提升。 首先&#xff0c;多個Shopee買家賬號的靈活運用&#xff0c;使賣家能…

前后端(JAVA)實現AES對稱加解密方式

文章目錄 前后端&#xff08;JAVA&#xff09;實現AES對稱加解密方式1 對稱加密分類以及概括1.1 加密安全等級 DES < 3DES < AES < RC1.2 DES1.3 3DES1.4 AES1.5 RC 2 前后端實現AES對稱加解密方式3 后端AES對稱加解密&#xff08;ECB和CBC模式&#xff09;工具類4 前…

【Python百寶箱】從傳感器到云端:深度解析Python在物聯網中的多面應用

邁向智能未來&#xff1a;Python與物聯網生態系統的完美融合 前言 隨著物聯網技術的不斷發展&#xff0c;Python作為一種靈活且強大的編程語言&#xff0c;逐漸成為物聯網開發的重要工具之一。本文將深入探討物聯網領域中常用的Python庫和框架&#xff0c;涵蓋了從輕量級通信…