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

資訊專欄INFORMATION COLUMN

flask入門2-模板引擎

JerryC / 1135人閱讀

摘要:模板模板引擎說明模板文件就是按照一定的規(guī)則書寫的展示效果的文件模板引擎就是負(fù)責(zé)按照指定規(guī)則進行替換的工具模板引擎選擇一渲染模板的方法將渲染的模板進行返回渲染字符串返回實例將模板內(nèi)容響應(yīng)給用戶渲染一內(nèi)容響應(yīng)給用戶原諒色二模板的語法模板中只存

day2模板 模板引擎

說明:模板文件就是按照一定的規(guī)則書寫的展示效果的HTML文件 模板引擎就是負(fù)責(zé)按照指定規(guī)則進行替換的工具

模板引擎選擇jinja2

一、渲染模板的方法

將渲染的模板進行返回

render_template()

渲染字符串返回

render_templates_string()

實例

@app.route("/")
def index():
    #將模板內(nèi)容響應(yīng)給用戶
    return render_template("index.html")
    #渲染一內(nèi)容響應(yīng)給用戶
    return render_template_string("

原諒色

")
二、模板的語法

模板中只存在倆種語法

變量

{{ var }}

#像模板文件中傳參
return render_template("index.html",title="首惡")
{{ title }}

標(biāo)簽

{% 標(biāo)簽名 %}

注意:

在模板中使用字典中的鍵 需要像使用對象得方式來調(diào)用
{{data.key}}

如果在模板中給定的變量不存在 則插入的是空字符串 不會報錯

三、過濾器

過濾器使用管道符 | 來使用的

{{ var|abs }} 返回一個數(shù)值的絕對值

default 設(shè)置默認(rèn)值

只有當(dāng)給定的變量不存在時 則執(zhí)行默認(rèn)值

當(dāng)設(shè)置default的boolean的時候 會執(zhí)行默認(rèn)值

  • {{ data.bool|default("我是默認(rèn)值",boolean=True) }}
  • first: 取出變量中的第一個字符

    last: 取出變量中的最后一個字符

    format: 字符的格式化

  • {{ "我叫%s 我今年%d歲了 我的存款為 %.2f"|format("羅鐵漢",38,23) }}
  • length: 返回變量值的長度

    join: 拼接成字符串

  • {{ [1,2,3,4]|join("") }}
  • {{ [1,2,3,4]|join("x") }}
  • safe: 不轉(zhuǎn)義標(biāo)簽 原樣顯示

    lower 轉(zhuǎn)為小寫

    upper 轉(zhuǎn)為大寫

    replace 替換

  • {{ data.string|replace("a","x") }}
  • striptages 去除HTML標(biāo)簽

    {{ data.html|striptags }}

    四、標(biāo)簽
    語法格式 :{% 標(biāo)簽名 %}
    (1) if

    實例

    {% if data.bool %}
            
  • {{ data.bool }}值為真
  • {% elif True %}
  • {{ True }}職位真
  • {% else %}
  • {{ data.bool }}值為假
  • {% endif %}
    (2) for 循環(huán)

    實例

    {% for i in data.xxxx %}
    {#  錯誤的迭代方法TypeError: "bool" object is not iterable #}
    {#    {% for i in data.bool %}#}
            
  • {{ i }}
  • {% else %}
  • 當(dāng)?shù)淖兞坎淮嬖跁r 則執(zhí)行else
  • {% endfor %}

    注意:

    break continue 不能夠在這里使用

    迭代字典
    {% for k,v in data.items() %}
         
  • {{ k }}=>{{ v }}
  • {% endfor %}
    獲取當(dāng)前迭代的狀態(tài)
    變量 描述
    loop.index 獲取當(dāng)前迭代的索引 從1開始
    loop.index0 獲取當(dāng)前迭代的索引 從0開始
    loop.first 是否為第一次迭代
    loop.last 是否為最后一次迭代
    loop.length 迭代的長度
    六、注釋

    {# 多行注釋 #}

    七、文件包含 include

    相當(dāng)于把一個文件 拷貝到當(dāng)前的你的包含的位置

    實例

    {% include "common/header.html" %}
    
    我是中間的內(nèi)容
    {% include "common/footer.html" %}

    注意:

    包含的公共的文件中 只存放 公共的代碼 除此以外什么都不要存在

    導(dǎo)入的時候 如果文件和在同一級別 直接導(dǎo)入就可以 如果包含在某個目錄中 需要寫出路徑

    {% include "common/header.html" %}
    {% include "test.html" %}

    ?

    八、宏 macro

    概念: 類似python中的函數(shù)

    實例

    在macro.html中

    {% macro input(name,type="text",value="") %}
        
    {% endmacro %}

    宏的調(diào)用

    {{ input("text","username","") }}
    {{ input() }} 
    {{ input(type="password",name="userpass") }}
    宏的導(dǎo)入 (1) import
    {% import "test.html" as test %}
    {% import "common/test.html" as test %}
    

    用戶名: {{ test.input(type="password",name="userpass") }}

    (2) form import
    {% from "test.html" import input %}
    {% from "common/test.html" import input %}
    

    用戶名: {{ input(type="password",name="userpass") }}

    注意:

    宏的調(diào)用只能在定義的下方去調(diào)用 否則未定義

    宏如果存在形參 且沒有默認(rèn)值 則可以調(diào)用(沒意義)

    形參的默認(rèn)值 需要遵循默認(rèn)值規(guī)則 有默認(rèn)值的參數(shù) 放右側(cè)

    可以正常使用 關(guān)鍵字參數(shù)

    九、繼承 extends
    語法:

    {% extends %} 繼承某個模板

    {% block %} 挖坑和填坑

    {{ super() }} 調(diào)用被替換掉的代碼

    base.html
    
    
    
    {% block header %}
        
        {% block meta %}
        {% endblock %}
        {% block title%}首頁{% endblock %}
        
        {% block link %}
        {% endblock %}
        {% block script %}
        {% endblock %}
    {% endblock %}
    
    
    
    頭部
    {% block con %} 我是中間的內(nèi)容部分 {% endblock %}
    尾部
    index.html繼承 base.html
    {% extends "common/base.html" %}
    {% block title %}
    我的首頁
    {% endblock %}
    {% block style %}
        {{ super() }}
        p{color:green;}
    {% endblock %}
    {% block con %}
    

    我是首頁的內(nèi)容

    我是首頁的內(nèi)容 {% endblock %}

    注意:

    如果當(dāng)替換某個樣式的時候 所有原來的樣式 都消失了 去查看是否使用了super()

    十、flask-bootstrap

    安裝

    pip install flask-bootstrap

    sudo pip3 install flask-bootstrap

    使用

    繼承 bootstrap/base.html 基礎(chǔ)模板 改造成適用于自己網(wǎng)站的base.html基礎(chǔ)模板

    自己的base.html
    {% extends "bootstrap/base.html" %}
    {% block navbar %}
        
    {% endblock %}
    {% block content %}
        
    {% block pagecontent %} 網(wǎng)頁的中間內(nèi)容部分寫在當(dāng)前的位置 {% endblock %}
    {% endblock %}

    使用 index.html

    {% extends "common/base.html" %}
    {% block title %}
    首頁
    {% endblock %}
    十一、錯誤頁面的定制 manage.py
    @app.errorhandler(404)
    def page_not_found(e):
        return render_template("common/error.html",error=e,code=404)
    
    @app.errorhandler(500)
    def server_error(e):
        return render_template("common/error.html",error=e,code=500)
    error.html
    {% extends "common/base.html" %}
    {% block title %}
        {{ code }}錯誤
    {% endblock %}
    {% block pagecontent %}
        
    {% endblock %}
    十二、視圖傳遞多個參數(shù) (1) 原始傳參
    @app.route("/")
    def index():
        return render_template("index.html",arg1=1,arg2=2...)
    (2) 使用字典
    @app.route("/")
    def index():
        return render_template("index.html",arg={arg1:1,arg2:2...})
        kwarg={arg1:1,arg2:2...}
        return render_template("index.html",``)
    (3) 使用全局變量g
    @app.route("/")
    def index():
        g.name = "張三"
        g.age = 18
        return render_template("index.html")
    模板中
        
    1. {{ g.name }}
    2. {{ g.age }}
    (4) 使用 **locals()
    @app.route("/")
    def index():
        name = "張三"
        age = 18
        print(locals())
        return render_template("index.html",**locals())
    模板中
    
  • {{ name }}
  • {{ age }}
  • 十三、url_for 構(gòu)造絕對的鏈接地址
    @app.route("/test/")
    def test():
        print(url_for("index",_external=True))
        return "test"
    十四、加載靜態(tài)資源

    靜態(tài)資源:圖片,css,js,視頻,音頻,,

    實例

    flask入門3-表單

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

    轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41825.html

    相關(guān)文章

    • flask入門1

      摘要:每天的內(nèi)容跑起來模板引擎表單文件上傳郵件發(fā)送一框架的簡介模型負(fù)責(zé)數(shù)據(jù)的操作視圖負(fù)責(zé)數(shù)據(jù)的展示控制器控制你的的操作以及視圖模板的渲染在中叫做模型負(fù)責(zé)數(shù)據(jù)的操作控制你的的操作以及視圖模板的渲染業(yè)務(wù)邏輯的操作模板負(fù)責(zé)數(shù)據(jù)的展示二架構(gòu)三概念是 flask 每天的內(nèi)容 flask跑起來 模板引擎 flask表單 文件上傳郵件發(fā)送 flask-sqlalchemy 一、web框架的簡介 M ...

      Freelander 評論0 收藏0
    • flask文檔學(xué)習(xí)筆記1-快速入門

      摘要:示例如下靜態(tài)路由使用動態(tài)變量的路由未指定變量類型使用動態(tài)變量的路由指定變量類型指定的路由變量,可以作為被裝飾的函數(shù)參數(shù)傳入進來。 開始決定認(rèn)真的在網(wǎng)上寫一些東西,主要原因還是在于希望能提升學(xué)習(xí)效果。雖說python寫了有幾年,但是web后端框架的確沒怎么接觸過,買了本狗書寥寥草草的過了一遍,發(fā)現(xiàn)很多東西還是理解不深,真的是好記性不如爛筆頭,知識也要從基礎(chǔ)開始,退回來好好看看官方文檔,再...

      lingdududu 評論0 收藏0
    • 從零開始搭建論壇(三):Flask框架簡單介紹

      摘要:我們的論壇項目就使用了該框架。此外,麥子學(xué)院也有一個入門視頻教程,一共小時的視頻教程,涵蓋開發(fā)的方方面面,包括環(huán)境的搭建,語法介紹,項目結(jié)構(gòu)的組織,全球化,單元測試等內(nèi)容。博客地址更多閱讀的機制三個框架的對比 前面兩篇文章中我們已經(jīng)了解 Web(HTTP)服務(wù)器,Web應(yīng)用程序,Web框架,WSGI這些 Python Web 開發(fā)中的概念。我們知道,Web框架通過將不同Web應(yīng)用程序中...

      Alan 評論0 收藏0

    發(fā)表評論

    0條評論

    最新活動
    閱讀需要支付1元查看
    <