国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Tornado學(xué)習(xí)筆記(2)

tianyu / 3272人閱讀

摘要:而這里的方法則是告訴來(lái)讀取模板文件,并將結(jié)果返回給瀏覽器。依舊可以使用,等條件控制語(yǔ)句,但是要記得以結(jié)尾。替換字符串中的字符為編碼形式。模塊模塊是封裝模板中包含的標(biāo)記樣式以及行為的可復(fù)用組件。

表單和模板
import os.path

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web

from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("index.html")

class PoemPageHandler(tornado.web.RequestHandler):
    def post(self):
        noun1 = self.get_argument("noun1")
        noun2 = self.get_argument("noun2")
        verb = self.get_argument("verb")
        noun3 = self.get_argument("noun3")
        self.render("poem.html", roads=noun1, wood=noun2, made=verb,
                difference=noun3)

if __name__ == "__main__":
    tornado.options.parse_command_line()
    app = tornado.web.Application(
        handlers=[(r"/", IndexHandler), (r"/poem", PoemPageHandler)],
        template_path=os.path.join(os.path.dirname(__file__), "templates")
    )
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()
    
    

這個(gè)表單包括了多個(gè)文本,其中的內(nèi)容在用戶點(diǎn)擊提交之后以POST請(qǐng)求的方式發(fā)送到/poem。Tornado為了響應(yīng)這個(gè)請(qǐng)求會(huì)自動(dòng)跳到poem.html,并且插入你在表單中填寫(xiě)的值。

渲染摸板

這和我在第一章里看到的例子差不多RequestHandler傳給tornado.web.Application對(duì)象。但是還是有區(qū)別的,首先是傳遞了一個(gè)template_path參數(shù)。template_path參數(shù)告訴Tornado在哪里尋找模板文件。而這里的self.render()方法則是告訴Tornado來(lái)讀取模板文件,并將結(jié)果返回給瀏覽器。
然而這里的index.html并不完整,它的確是一個(gè)已經(jīng)寫(xiě)好的HTML標(biāo)記,但是一般情況下我們會(huì)輸出我們所希望HTML結(jié)合程序傳入給模板的值。{{}}所括起來(lái)的字符串,括起來(lái)的字符串就是占位符,我們?cè)阡秩灸0宓臅r(shí)候會(huì)希望以實(shí)際的值代替。這里還是可以通過(guò)render()函數(shù)傳遞所希望表達(dá)出來(lái)的關(guān)鍵字參數(shù)。例如這里的:

self.render("poem.html", roads=noun1, wood=noun2, made=verb, difference=noun3)

這里就告訴模板我們將傳入的參數(shù)。
這里的{{}}可以填充任意的Python表達(dá)式:

>>> from tornado.template import Template
>>> print Template("{{2+3}}").generate()
5
>>> print Template({{"gogogojuststudy"[-5:]}}").generate()
study
>>>

同樣可以在Tornado模板中使用條件和循環(huán)語(yǔ)句。控制語(yǔ)句以{% %}包圍。
一般以{%if condition%}。依舊可以使用for,while等條件控制語(yǔ)句,但是要記得以{%end %}結(jié)尾。
這里有其他的一些默認(rèn)提供的一些便利的函數(shù):

escape() #替換字符串中的&、為他們對(duì)應(yīng)的HTML字符
url_escape() #使用urlib。quote_plus替換字符串s中的字符為URL編碼形式。
squeeze() #過(guò)濾字符串,把連續(xù)的多個(gè)空白字符替換成一個(gè)空格
模板擴(kuò)展

Tornado可以方便我們擴(kuò)展一個(gè)已經(jīng)存在的模板,只需要在新的模板文件頂部放上{%extends “filename.html”%}這里便是使得新的HTML文件繼承了父HTML文件的所有標(biāo)簽。
這里我們就需要用到塊了,block語(yǔ)句可以幫助我們改變一些模板元素。每個(gè){%block %}對(duì)應(yīng)一個(gè){% end%}

UI模塊

UI模塊是封裝模板中包含的標(biāo)記、樣式以及行為的可復(fù)用組件。它所定義的元素通常用于多個(gè)模板交叉復(fù) 用或在同一個(gè)模板中重復(fù)使用。模塊本身是一個(gè)繼承自Tornado的UIModule類(lèi)的簡(jiǎn)單Python類(lèi),并定義 了一個(gè)render()方法。

import tornado.web
import tornado.httpserver
import tornado.ioloop
import tornado.options
import os.path

from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)

class HelloHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("hello.html")

class HelloModule(tornado.web.UIModule):
    def render(self):
        return "

Hello, world!

" if __name__ == "__main__": tornado.options.parse_command_line() app = tornado.web.Application( handlers=[(r"/", HelloHandler)], template_path=os.path.join(os.path.dirname(__file__), "templates"), ui_modules={"Hello": HelloModule} ) server = tornado.httpserver.HTTPServer(app) server.listen(options.port) tornado.ioloop.IOLoop.instance().start()

這個(gè)例子里ui_module字典里只有一項(xiàng),這里把名為Hello模塊的引用和定義的HELLOMODULE結(jié)合起來(lái)。當(dāng)我們調(diào)用HelloHandler并渲染hello.html時(shí),可以使用{% module Hello()%}模板標(biāo)簽來(lái)包含HelloModulerender()方法返回的字符串。

例如在這里:

    

UI Module Example
    

 {% module Hello() %}    

 

這里通過(guò)模板標(biāo)簽自身的位置調(diào)用HelloModule返回的字符串進(jìn)行填充。

嵌入JavaScript和CSS

為了給這些模塊提供更高的靈活性,Tornado允許你使用embedded_css和embedded_javascript方法嵌 入其他的CSS和JavaScript文件
不僅僅是可以返回一個(gè)JavaScript和CSS規(guī)則,而且更加靈活的是在閉合的標(biāo)簽前添加完整的HTML標(biāo)記。
你可以使用javascript_files()和css_files()來(lái) 包含完整的文件,不論是本地的還是外部的。

def css_files(self):    
return "/static/css/newreleases.css"
def javascript_files(self):    
return"https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js"

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/37646.html

相關(guān)文章

  • Tornado學(xué)習(xí)筆記(1)

    摘要:對(duì)參數(shù)類(lèi)型進(jìn)行檢驗(yàn),這里為當(dāng)參數(shù)類(lèi)型不合適是會(huì)拋出一個(gè)異常。將使用的第二個(gè)參數(shù)值作為默認(rèn)值。而請(qǐng)求將從格式中取得指定的文本。這里需要正則表達(dá)式相關(guān)的知識(shí),到了后面的學(xué)習(xí)中,必要時(shí)再去深入學(xué)習(xí)。到目前我們使用了,還支持任何合法的請(qǐng)求。 參考書(shū)籍《Introduction to Tornado》1.1 Tornado是什么?Tornado是使用Python編寫(xiě)的一個(gè)強(qiáng)大的、可擴(kuò)展的Web服...

    ChanceWong 評(píng)論0 收藏0
  • tornado學(xué)習(xí)筆記(1)HTTP請(qǐng)求及API測(cè)試

    摘要:首先是的請(qǐng)求接著是的請(qǐng)求在本次分享中,我們介紹了的請(qǐng)求,包括請(qǐng)求,并將介紹如何使用和來(lái)測(cè)試該本次分享到此結(jié)束,歡迎大家交流 ??Tornado是現(xiàn)在的主流 Web 服務(wù)器框架,它與大多數(shù) Python 的框架有著明顯的區(qū)別:它是非阻塞式服務(wù)器,而且速度相當(dāng)快。得利于其非阻塞的方式和對(duì) epoll 的運(yùn)用,Tornado 每秒可以處理數(shù)以千計(jì)的連接,這意味著對(duì)于實(shí)時(shí) Web 服務(wù)來(lái)說(shuō),T...

    EddieChan 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.30 - 學(xué)習(xí) Python 來(lái)做一些神奇好玩的事情吧

    摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡(jiǎn)稱(chēng)是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡(jiǎn)明扼要地說(shuō)明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開(kāi)始之前,我們先來(lái)看這樣一個(gè)提問(wèn): pyth...

    lifesimple 評(píng)論0 收藏0
  • Tornado源碼閱讀筆記tornado.web.Application

    摘要:從的開(kāi)始分析的源碼很容易可以看出,通過(guò)繼承類(lèi)定義自己的處理類(lèi),來(lái)處理請(qǐng)求。類(lèi)的對(duì)象來(lái)處理的路由將于處理類(lèi)組成,關(guān)聯(lián)起來(lái)。調(diào)用的來(lái)將和綁定在一起初始化一個(gè)的對(duì)象,由其來(lái)處理請(qǐng)求的路由,來(lái)利用建立的規(guī)則。 從tornado的 Hello,world 開(kāi)始分析tornado的源碼 pythonimport tornado.ioloop import tornado.web class M...

    Cympros 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<