日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)Tornado教程:Tornado靈活的輸出生成

一個(gè)簡(jiǎn)單的模板系統(tǒng),將模板編譯成 python 代碼。

讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)雅安服務(wù)器托管、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、南雄網(wǎng)站維護(hù)、網(wǎng)站推廣。

基本用法如下:

t = template.Template("{{ myvalue }}")
print(t.generate(myvalue="XXX"))

?Loader ?是一個(gè)從根目錄加載模板并緩存編譯好的模板的類(lèi):

loader = template.Loader("/home/btaylor")
print(loader.load("test.html").generate(myvalue="XXX"))

我們將所有模板編譯為原始 Python

### base.html

  
    {% block title %}Default title{% end %}
  
  
    
    {% for student in students %} {% block student %}
  • {{ escape(student.name) }}
  • {% end %} {% end %}
### bold.html {% extends "base.html" %} {% block title %}A bolder title{% end %} {% block student %}
  • {{ escape(student.name) }}
  • {% end %}

    與大多數(shù)其他模板系統(tǒng)不同,我們對(duì)您可以包含在語(yǔ)句中的表達(dá)式?jīng)]有任何限制。 ?if?和 ?for塊被完全翻譯成 Python,所以你可以做復(fù)雜的表達(dá)式,比如:

    {% for student in [p for p in people if p.student and p.age > 23] %}
      
  • {{ escape(student.name) }}
  • {% end %}

    直接翻譯成 Python 意味著您可以輕松地將函數(shù)應(yīng)用于表達(dá)式,例如上面示例中的 ?escape()? 函數(shù)。 您可以像任何其他變量一樣將函數(shù)傳遞給模板(在 ?RequestHandler中,覆蓋 ?RequestHandler.get_template_namespace?):

    ### Python code
    def add(x, y):
       return x + y
    template.execute(add=add)
    
    ### The template
    {{ add(1, 2) }}

    我們默認(rèn)為所有模板提供函數(shù)?escape()?、?url_escape()?、?json_encode()和?squeeze()?

    典型的應(yīng)用程序不會(huì)手動(dòng)創(chuàng)建 Template 或 Loader 實(shí)例,而是使用 tornado.web.RequestHandler 的 ?render和 ?render_string方法,它們會(huì)根據(jù) template_path 應(yīng)用程序設(shè)置自動(dòng)加載模板。

    以?_tt_?開(kāi)頭的變量名由模板系統(tǒng)保留,不應(yīng)由應(yīng)用程序代碼使用。

    語(yǔ)法參考

    模板表達(dá)式用雙花括號(hào)括起來(lái):?{{ ... }}?。 內(nèi)容可以是任何 python 表達(dá)式,將根據(jù)當(dāng)前的自動(dòng)轉(zhuǎn)義設(shè)置進(jìn)行轉(zhuǎn)義并插入到輸出中。 其他模板指令使用 ?{% %}?。

    要注釋掉某個(gè)部分以使其從輸出中省略,請(qǐng)用 ?{# ... #}? 將其括起來(lái)。

    要在輸出中包含文字{{?、?{%{#)?,請(qǐng)將它們分別轉(zhuǎn)義為?{{!?、?{%!{#!)?。

    ?{% apply *function* %}...{% end %}?

    對(duì) ?apply?和end之間的所有模板代碼的輸出應(yīng)用一個(gè)函數(shù):

    {% apply linkify %}{{name}} said: {{message}}{% end %}

    請(qǐng)注意,作為實(shí)現(xiàn)細(xì)節(jié),應(yīng)用塊被實(shí)現(xiàn)為嵌套函數(shù),因此可能會(huì)與通過(guò) ?{% set %}? 設(shè)置的變量或在循環(huán)中使用 ?{% break %}? 或 ?{% continue %}? 進(jìn)行奇怪的交互。

    ??{% autoescape *function* %}?

     設(shè)置當(dāng)前文件的自動(dòng)轉(zhuǎn)義模式。 這不會(huì)影響其他文件,即使是 ?{% include %}? 引用的文件。 請(qǐng)注意,也可以在 ?Application?或 ?Loader上全局配置自動(dòng)轉(zhuǎn)義:

    {% autoescape xhtml_escape %}
    {% autoescape None %}

    ?{% block *name* %}...{% end %}?

    表示與 ?{% extends %}? 一起使用的命名的、可替換的塊。 父模板中的塊將替換為子模板中同名塊的內(nèi)容。:

    
    {% block title %}Default title{% end %}
    
    
    {% extends "base.html" %}
    {% block title %}My page title{% end %}

    ?{% comment ... %}?

    將從模板輸出中刪除的注釋。 注意沒(méi)有 ?{% end %}? 標(biāo)簽; 注釋從單詞 ?comment到結(jié)束 ?%}? 標(biāo)記。

    ?{% extends *filename* %}?

    從另一個(gè)模板繼承。 使用擴(kuò)展的模板應(yīng)該包含一個(gè)或多個(gè)塊標(biāo)簽來(lái)替換父模板的內(nèi)容。 子模板中未包含在塊標(biāo)記中的任何內(nèi)容都將被忽略。 例如,請(qǐng)參閱 ?{% block %}? 標(biāo)簽。

    ?{% for *var* in *expr* %}...{% end %}?

    與python for 語(yǔ)句相同。 ?{% break %}? 和 ?{% continue %}? 可以在循環(huán)內(nèi)使用。

    ?{% from *x* import *y* %}?

    與 python 導(dǎo)入語(yǔ)句相同。

    ?{% if *condition* %}...{% elif *condition* %}...{% else %}...{% end %}?

    條件語(yǔ)句 - 輸出條件為真的第一部分。(?elif ?和 ?else ?部分是可選的)

    ?{% import *module* %}?

    與 python 導(dǎo)入語(yǔ)句相同。

    ?{% include *filename* %}?

    包括另一個(gè)模板文件。 被包含的文件可以看到所有的局部變量,就好像它被直接復(fù)制到了包含指令的位置(?{% autoescape %}指令是一個(gè)例外)。 或者,?{% module Template(filename, **kwargs) %}? 可用于包含另一個(gè)具有單獨(dú)命名空間的模板。

    ?{% module *expr* %}?

    渲染一個(gè) UIModule。 UIModule 的輸出不會(huì)被轉(zhuǎn)義:

    {% module Template("foo.html", arg=42) %}

    ?UIModules是?tornado.web.RequestHandler?類(lèi)(特別是它的渲染方法)的一個(gè)特性,當(dāng)模板系統(tǒng)在其他上下文中單獨(dú)使用時(shí)將不起作用。

    ?{% raw *expr* %}?

    輸出給定表達(dá)式的結(jié)果而不自動(dòng)轉(zhuǎn)義。

    ?{% set *x* = *y* %}?

    設(shè)置一個(gè)局部變量。

    ?{% try %}...{% except %}...{% else %}...{% finally %}...{% end %}?

    與 python try 語(yǔ)句相同。

    ?{% while *condition* %}... {% end %}?

    與 python while 語(yǔ)句相同。 ?{% break %}? 和 ?{% continue %}? 可以在循環(huán)內(nèi)使用。

    ?{% whitespace *mode* %}?

    為當(dāng)前文件的其余部分設(shè)置空白模式(或直到下一個(gè) ?{% whitespace %}? 指令)。

    類(lèi)參考

    class tornado.template.Template(template_string, name="", loader=None, compress_whitespace=None, autoescape="xhtml_escape", whitespace=None)

    我們從給定的 template_string 編譯成 Python。 您可以使用 generate() 從變量中生成模板。

    參數(shù):

    ?template_string?(str) - 模板文件的內(nèi)容。

    ?name ?(str) -- 加載模板的文件名(用于錯(cuò)誤消息)。

    ?loader ?(tornado.template.BaseLoader) -- 負(fù)責(zé)此模板的 BaseLoader,用于解析 {% include %} 和 {% extend %} 指令。

    ?compress_whitespace ?(bool) – 自 Tornado 4.3 起已棄用。 如果為 true,則等效于 whitespace="single",如果為 false,則等效于 whitespace="all"。

    ?autoescape ?(str) -- 模板命名空間中的函數(shù)名稱(chēng),或 None 默認(rèn)禁用轉(zhuǎn)義。

    ?whitespace ?(str) -- 指定空格處理的字符串

    在 4.3 版更改: 添加?whitespace?參數(shù); 不推薦使用 ?compress_whitespace?。

    class tornado.template.BaseLoader(autoescape: str = 'xhtml_escape', namespace: Optional[Dict[str, Any]] = None, whitespace: Optional[str] = None)

    您必須使用模板加載器才能使用 {% extends %} 和 {% include %} 等模板結(jié)構(gòu)。 加載器在第一次加載后緩存所有模板。

    參數(shù):

    • ?autoescape ?(str) – 模板命名空間中的函數(shù)名稱(chēng),例如“xhtml_escape”,或 None 默認(rèn)禁用自動(dòng)轉(zhuǎn)義。
    • ?namespace ?(dict) -- 要添加到默認(rèn)模板命名空間的字典,或無(wú)。
    • ?whitespace ?(str) -- 一個(gè)字符串,指定模板中空格的默認(rèn)行為。以“.html”和“.js”結(jié)尾的文件默認(rèn)為“single”,其他文件默認(rèn)為“all”。

    在 4.3 版更改: 添加了?whitespace?參數(shù)。

    class tornado.template.Loader(root_directory: str, **kwargs)

    從單個(gè)根目錄加載的模板加載器

    class tornado.template.DictLoader(dict: Dict[str, str], **kwargs)

    從字典加載的模板加載器

    exception tornado.template.ParseError(message: str, filename: Optional[str] = None, lineno: int = 0)

    針對(duì)模板語(yǔ)法錯(cuò)誤引發(fā)。

    ?ParseError實(shí)例具有指示錯(cuò)誤位置的 ?filename和 ?lineno屬性。

    tornado.template.filter_whitespace(mode: str, text: str) → str

    根據(jù)模式轉(zhuǎn)換文本中的空格。

    可用模式有:

    • ?all?:返回所有未修改的空格。
    • ?single?:用單個(gè)空格字符折疊連續(xù)的空格,保留換行符。
    • ?oneline?:將所有運(yùn)行的空格折疊成一個(gè)空格字符,刪除進(jìn)程中的所有換行符。


    分享標(biāo)題:創(chuàng)新互聯(lián)Tornado教程:Tornado靈活的輸出生成
    鏈接地址:http://www.5511xx.com/article/cdephij.html