Read Sean

          Read me, read Sean.
          posts - 508, comments - 655, trackbacks - 9, articles - 4

          導(dǎo)航

          公告


          • 關(guān)于我
          • 人生是一場(chǎng)對(duì)話
          • gaoyuxiang AT gmail DOT com
          • titlelogo.png

          • 我的譯作
          • Scala for the Impatient
          • Open Source SOA
          • Programming in Scala

          • 聲明
          • 所有文章和代碼在這里以"現(xiàn)狀"提供,作者不提供任何形式的擔(dān)保,也沒(méi)有授予除閱讀和有條件共享之外的任何權(quán)利。除非特別說(shuō)明,所有文章均為本blog作者原創(chuàng),如需轉(zhuǎn)載請(qǐng)注明出處和原作者,如用于商業(yè)目的,需作者本人書(shū)面許可。

          • 推薦文章
          • Pylons起步

          常用鏈接

          留言簿(29)

          隨筆分類(842)

          隨筆檔案(507)

          文章檔案(4)

          Friends' blogs

          搜索

          •  

          積分與排名

          • 積分 - 784221
          • 排名 - 54

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          [Pylons] Mako頁(yè)面模板引擎

          Posted on 2009-01-27 15:50 laogao 閱讀(2238) 評(píng)論(0)  編輯  收藏 所屬分類: On Python

          Pylons是一個(gè)典型的MVC Web框架,在之前的幾篇隨筆中,我們一起了解了Pylons的安裝、默認(rèn)項(xiàng)目結(jié)構(gòu)、Routes和controller("C")以及SQLAlchemy("M"),在這個(gè)系列的最后,我們一起來(lái)看看"V"。

          在我們的controller代碼中,每個(gè)action在return的時(shí)候,可以選擇:
          1- 直接return字符串
          2- 通過(guò)render()函數(shù)將輸出交給頁(yè)面模板引擎處理
          3- redirect_to()重定向到其他URL

          直接return太簡(jiǎn)單,redirect_to也沒(méi)有特別需要介紹的,重點(diǎn)看render()。如果你一直follow這個(gè)系列,那么在你的controllers/hello.py中,可以看到這樣一行import:
          from?newapp.lib.base?import?BaseController,?render

          從lib.base引入了一個(gè)render函數(shù),跟到lib/base代碼里查看,我們會(huì)知道:
          from?pylons.templating?import?render_mako?as?render
          其實(shí)我們用到的render()函數(shù),是pylons.templating.render_mako的別名。

          注: 這里假定你在paster create時(shí)選擇了默認(rèn)的mako,其他Pylons原生支持的頁(yè)面模板引擎還有結(jié)構(gòu)相對(duì)更層次化的Genshi和更接近Django實(shí)現(xiàn)的Jinja。

          render_mako()函數(shù)簽名如下:
          render_mako(template_name, extra_vars=None, cache_key=None, cache_type=None, cache_expire=None)

          最基本的用法是給出template文件名,然后通過(guò)extra_vars傳入?yún)?shù),Pylons默認(rèn)查找頁(yè)面模板文件是在項(xiàng)目的templates子目錄,這個(gè)路徑也可以在config/environment.py中修改。在Pylons中,被推薦的傳參做法是使用tmpl_context,在生成controller的時(shí)候,已經(jīng)自動(dòng)import了tmpl_context并別名為c,這樣,我們只需要在c上綁上我們需要傳遞給模板的數(shù)據(jù),模板在解析時(shí),也就能夠通過(guò)c得到這些數(shù)據(jù)了。像這樣:
          c.name?=?u'Pylons?n00b'
          return?render('hello.mako')

          然后,在hello.mako中:
          <h3>Hello?<b>${c.name}</b>!</h3>

          在模板代碼中,有些Pylons系統(tǒng)變量/函數(shù)是可以直接訪問(wèn)的,包括:
          tmpl_context (c) - 用于controller和template傳遞數(shù)據(jù)
          config - 配置信息
          app_globals (g) - 應(yīng)用的全局變量
          h - WebHelpers,包括h.form、h.link_to、h.url_for等等實(shí)用函數(shù)
          request - 請(qǐng)求
          response - 應(yīng)答
          session - 會(huì)話信息
          translator、ungettext()、_()、N_() - 處理國(guó)際化

          除了基本的${}變量替代語(yǔ)法之外,類似JSP,Mako還支持注釋、if/else/for控制邏輯、代碼片段、return、標(biāo)簽等,具體的可以掃一眼官方說(shuō)明:
          http://www.makotemplates.org/docs/syntax.html
          很精簡(jiǎn),也非常容易理解,這里就不詳細(xì)說(shuō)明了。

          至此,我們已經(jīng)了解了Pylons最核心的幾個(gè)組件,足夠我們搭建常規(guī)的Web應(yīng)用了。其他值得大家繼續(xù)挖掘的內(nèi)容包括:國(guó)際化、表單驗(yàn)證(FormEncode)、用戶驗(yàn)證和權(quán)限(AuthKit、repoze.who、repoze.what)、AJAX、Python 3.0、WSGI基礎(chǔ)架構(gòu)等。

          本文是該系列最后一篇,希望通過(guò)簡(jiǎn)單的介紹和學(xué)習(xí),大家能夠喜歡并順利的上手Pylons,也希望越來(lái)越多的人關(guān)注這個(gè)優(yōu)秀的Python Web應(yīng)用框架。

          主站蜘蛛池模板: 汶上县| 磴口县| 界首市| 双城市| 娱乐| 临澧县| 承德县| 鹤壁市| 吴忠市| 新密市| 宝清县| 博爱县| 永修县| 汾西县| 赤壁市| 清镇市| 武夷山市| 金堂县| 江孜县| 乌海市| 定边县| 基隆市| 上林县| 新宁县| 广饶县| 青田县| 闻喜县| 谢通门县| 会泽县| 泰顺县| 宁波市| 仁布县| 泰来县| 雷州市| 牡丹江市| 武隆县| 昌平区| 乐平市| 明溪县| 汨罗市| 汝南县|