亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python的Django框架中的Context使用

2020-01-04 18:04:14
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Python的Django框架中的Context使用,相關的渲染是Django中創建模版的關鍵,需要的朋友可以參考下

一旦你創建一個 Template 對象,你可以用 context 來傳遞數據給它。 一個context是一系列變量和它們值的集合。

context在Django里表現為 Context 類,在 django.template 模塊里。 她的構造函數帶有一個可選的參數: 一個字典映射變量和它們的值。 調用 Template 對象 的 render() 方法并傳遞context來填充模板:

 

 
  1. >>> from django.template import Context, Template 
  2. >>> t = Template('My name is {{ name }}.'
  3. >>> c = Context({'name''Stephane'}) 
  4. >>> t.render(c) 
  5. u'My name is Stephane.' 

我們必須指出的一點是,t.render(c)返回的值是一個Unicode對象,不是普通的Python字符串。 你可以通過字符串前的u來區分。 在框架中,Django會一直使用Unicode對象而不是普通的字符串。 如果你明白這樣做給你帶來了多大便利的話,盡可能地感激Django在幕后有條不紊地為你所做這這么多工作吧。 如果不明白你從中獲益了什么,別擔心。你只需要知道Django對Unicode的支持,將讓你的應用程序輕松地處理各式各樣的字符集,而不僅僅是基本的A-Z英文字符。

字典和Contexts

Python的字典數據類型就是關鍵字和它們值的一個映射。 Context 和字典很類似, Context 還提供更多的功能。

變量名必須由英文字符開始 (A-Z或a-z)并可以包含數字字符、下劃線和小數點。 (小數點在這里有特別的用途,稍后我們會講到)變量是大小寫敏感的。

下面是編寫模板并渲染的示例:

 

 
  1. >>> from django.template import Template, Context 
  2. >>> raw_template = """<p>Dear {{ person_name }},</p> 
  3. ... 
  4. ... <p>Thanks for placing an order from {{ company }}. It's scheduled to 
  5. ... ship on {{ ship_date|date:"F j, Y" }}.</p> 
  6. ... 
  7. ... {% if ordered_warranty %} 
  8. ... <p>Your warranty information will be included in the packaging.</p> 
  9. ... {% else %} 
  10. ... <p>You didn't order a warranty, so you're on your own when 
  11. ... the products inevitably stop working.</p> 
  12. ... {% endif %} 
  13. ... 
  14. ... <p>Sincerely,<br />{{ company }}</p>""
  15. >>> t = Template(raw_template) 
  16. >>> import datetime 
  17. >>> c = Context({'person_name''John Smith'
  18. ... 'company''Outdoor Equipment'
  19. ... 'ship_date': datetime.date(2009, 4, 2), 
  20. ... 'ordered_warranty': False}) 
  21. >>> t.render(c) 
  22. u"<p>Dear John Smith,</p>/n/n<p>Thanks for placing an order from Outdoor 
  23. Equipment. It's scheduled to/nship on April 2, 2009.</p>/n/n/n<p>You 
  24. didn't order a warranty, so you're on your own when/nthe products 
  25. inevitably stop working.</p>/n/n/n<p>Sincerely,<br />Outdoor Equipment 
  26. </p>" 

讓我們逐步來分析下這段代碼:

首先我們導入 (import)類 Template 和 Context ,它們都在模塊 django.template 里。

我們把模板原始文本保存到變量 raw_template 。注意到我們使用了三個引號來 標識這些文本,因為這樣可以包含多行。

接下來,我們創建了一個模板對象 t ,把 raw_template 作為 Template 類構造函數的參數。

我們從Python的標準庫導入 datetime 模塊,以后我們將會使用它。

然后,我們創建一個 Context 對象, c 。 Context 構造的參數是Python 字典數據類型。 在這里,我們指定參數 person_name 的值是 'John Smith' , 參數company 的值為 ‘Outdoor Equipment' ,等等。

最后,我們在模板對象上調用 render() 方法,傳遞 context參數給它。 這是返回渲染后的模板的方法,它會替換模板變量為真實的值和執行塊標簽。

注意,warranty paragraph顯示是因為 ordered_warranty 的值為 True . 注意時間的顯示, April 2, 2009 , 它是按 'F j, Y' 格式顯示的。

如果你是Python初學者,你可能在想為什么輸出里有回車換行的字符('/n' )而不是 顯示回車換行? 因為這是Python交互解釋器的緣故: 調用 t.render(c) 返回字符串, 解釋器缺省顯示這些字符串的 真實內容呈現 ,而不是打印這個變量的值。 要顯示換行而不是 '/n' ,使用 print 語句: print t.render(c) 。

這就是使用Django模板系統的基本規則: 寫模板,創建 Template 對象,創建 Context , 調用 render() 方法。

同一模板,多個上下文

一旦有了 模板 對象,你就可以通過它渲染多個context, 例如:

 

 
  1. >>> from django.template import Template, Context 
  2. >>> t = Template('Hello, {{ name }}'
  3. >>> print t.render(Context({'name''John'})) 
  4. Hello, John 
  5. >>> print t.render(Context({'name''Julie'})) 
  6. Hello, Julie 
  7. >>> print t.render(Context({'name''Pat'})) 
  8. Hello, Pat 

無論何時我們都可以像這樣使用同一模板源渲染多個context,只進行 一次模板創建然后多次調用render()方法渲染會更為高效:

 

 
  1. # Bad 
  2. for name in ('John''Julie''Pat'): 
  3. t = Template('Hello, {{ name }}'
  4. print t.render(Context({'name': name})) 
  5.  
  6. # Good 
  7. t = Template('Hello, {{ name }}'
  8. for name in ('John''Julie''Pat'): 
  9. print t.render(Context({'name': name})) 

Django 模板解析非??旖?。 大部分的解析工作都是在后臺通過對簡短正則表達式一次性調用來完成。 這和基于 XML 的模板引擎形成鮮明對比,那些引擎承擔了 XML 解析器的開銷,且往往比 Django 模板渲染引擎要慢上幾個數量級。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产在线999| 一级做a爰片久久毛片美女图片| 欧美一级大片在线免费观看| 一色桃子一区二区| 亚洲xxxx18| 日韩精品在线观看网站| 日韩hd视频在线观看| 一区二区亚洲欧洲国产日韩| 日韩av在线天堂网| 亚洲精品一区中文| 国产精品男人的天堂| 日韩av免费观影| 久久久噜噜噜久久久| 一区二区三欧美| 欧洲美女免费图片一区| 欧美日本高清视频| 久热爱精品视频线路一| 91久久久久久久久久| 国产日韩欧美自拍| 97色在线视频| 亲子乱一区二区三区电影| 亚洲精品色婷婷福利天堂| 久久久久久亚洲精品中文字幕| 91久久精品在线| 国产精品高潮呻吟视频| 亚洲人在线观看| 亚洲免费人成在线视频观看| 国产精品吴梦梦| 国产精品∨欧美精品v日韩精品| 亚洲第五色综合网| 国产极品精品在线观看| 精品久久中文字幕| 国模精品视频一区二区三区| 91情侣偷在线精品国产| www亚洲欧美| 欧美人与性动交| 亚洲午夜性刺激影院| 国产成+人+综合+亚洲欧洲| 日韩成人在线视频观看| 久久综合国产精品台湾中文娱乐网| 亚洲女人天堂视频| 91九色视频导航| 69久久夜色精品国产69乱青草| 海角国产乱辈乱精品视频| 国产精品草莓在线免费观看| 成人黄色av免费在线观看| 九九久久国产精品| 欧洲亚洲免费视频| 九九热精品视频国产| 亚洲区免费影片| 国产精品国内视频| 性色av一区二区三区| 亚洲三级免费看| 欧美日韩国产一中文字不卡| 国产精品午夜一区二区欲梦| 国产精品久久久久久久7电影| 岛国精品视频在线播放| 久久中文久久字幕| 91久久精品一区| 国产成人精品在线视频| 人妖精品videosex性欧美| 国产成人极品视频| 久久久999国产精品| 日韩av中文字幕在线| 26uuu亚洲伊人春色| 国产精品丝袜久久久久久不卡| 91chinesevideo永久地址| 亚洲视频在线看| 欧美老女人性生活| 欧美做爰性生交视频| 亚洲欧美变态国产另类| 最新国产成人av网站网址麻豆| 亚洲va欧美va国产综合剧情| 亚洲性xxxx| 亚洲曰本av电影| 成人日韩在线电影| 国产精品免费小视频| 国产精品白嫩美女在线观看| 午夜精品在线视频| 欧美日韩亚洲一区二区| 国产婷婷97碰碰久久人人蜜臀| 亚洲综合日韩中文字幕v在线| 高跟丝袜欧美一区| 欧美另类暴力丝袜| 揄拍成人国产精品视频| 亚洲欧美激情视频| 色综合久综合久久综合久鬼88| 91沈先生在线观看| 亚洲精品国产精品久久清纯直播| 欧美放荡办公室videos4k| 视频直播国产精品| 日韩风俗一区 二区| 亚洲欧美日韩久久久久久| 国产精品人成电影| 日韩精品视频免费专区在线播放| 中文字幕在线看视频国产欧美| 国产精品在线看| 国产精品黄页免费高清在线观看| 国产精品久久久久久久久久久久久| 国产精品网红直播| 国产日韩在线亚洲字幕中文| 国产精品流白浆视频| 中文字幕日本精品| 欧美亚洲激情在线| 久久久久久久av| 伊人久久大香线蕉av一区二区| 国产精品美女www爽爽爽视频| 亚洲一区二区三区xxx视频| 亚洲第一网站免费视频| 一区二区中文字幕| 久久夜色精品国产亚洲aⅴ| 在线成人免费网站| 国产精自产拍久久久久久蜜| 精品久久久久久久久久ntr影视| 亚洲视频在线视频| 久久免费观看视频| 日韩欧美在线视频免费观看| 欧美专区在线播放| 8x海外华人永久免费日韩内陆视频| 91av在线播放视频| 精品久久久久国产| 国产精品国模在线| 日韩免费在线看| 中文字幕日韩在线视频| 亚洲男人天堂视频| 成人看片人aa| 中文字幕精品久久| 97香蕉超级碰碰久久免费的优势| 久久青草精品视频免费观看| 日韩电影中文 亚洲精品乱码| 国产一区视频在线| 国产高清视频一区三区| 91日韩在线播放| 亚洲精品国产福利| 69久久夜色精品国产69乱青草| 91wwwcom在线观看| 久久免费精品视频| 亚洲免费一级电影| 亚洲精品色婷婷福利天堂| 亚洲电影免费观看高清| 久久综合色影院| 啊v视频在线一区二区三区| 中文字幕av一区中文字幕天堂| 国产欧美日韩精品丝袜高跟鞋| 国产亚洲精品久久久优势| 日韩在线视频观看| 欧日韩不卡在线视频| 日韩电影免费在线观看中文字幕| 欧美激情日韩图片| 亚洲aⅴ日韩av电影在线观看| 日韩精品电影网| 日韩av色综合| 亚洲精选一区二区| 国产日韩欧美夫妻视频在线观看| 色综合天天综合网国产成人网| 亚洲欧美日韩中文在线制服| 精品露脸国产偷人在视频| 欧美大尺度电影在线观看| 亚洲香蕉伊综合在人在线视看| 国产精品三级久久久久久电影| 国产高清在线不卡| 91在线播放国产| 精品国产91久久久| 成人免费视频网址|