1. 程式人生 > >(六)flask框架使用教程系列——flask渲染jinja2模板和傳參

(六)flask框架使用教程系列——flask渲染jinja2模板和傳參

一、如何渲染jinja2模板

  1. 模板放在templates資料夾下
  2. flask中匯入render_template函式
  3. 在檢視函式中,使用render_template函式渲染模板。注意:只需要填寫模板的名字,不需要填寫templates這個資料夾的路徑。如果templates這個資料夾下面有目錄,那麼需要在填寫模板名字的時候加上這個路徑。

二、模板傳參

  1. 如果只有一個或者幾個少量引數,可以直接在render_template函式中新增關鍵字引數就可以了;
  2. 如果有多個引數的時候,那麼可以先把所有的引數放在字典中,然後在render_template
    中,使用**(兩個星號),把字典轉化成關鍵引數傳遞進去,這樣的程式碼更加方便管理和使用。

三、關鍵程式碼

I.使用模板程式碼

1.首先在templates 目錄下面建立一個index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首頁</title>
</head>
<body>
    html頁面作為templates資料夾下的模板!
</body>
</html>

2.在template.py中使用模板:

# encoding:utf-8
from flask import Flask,render_template

app = Flask(__name__)

@app.route('/')
def index():
     return render_template('index.html')


if __name__ == '__main__':
    app.run(debug=True)

3.執行效果圖
首頁模板

II. 模板中引數的傳遞

A.傳遞一個或者少量引數

1.傳遞一個或者少量引數index.hml

程式碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首頁</title>
</head>
<body>
    html頁面作為templates資料夾下的模板!
    <p>部落格使用者名稱:{{ username }}</p>
    <p>部落格密碼:{{ password }}</p>
    <P>部落格級別:{{ level }}</P>
</body>
</html>

2.傳遞一個或者少量引數template.py程式碼

# encoding:utf-8
from flask import Flask,render_template

app = Flask(__name__)

@app.route('/')
def index():
     return render_template('index.html', username="csdnABC", password="123456", level="部落格專家")


if __name__ == '__main__':
    app.run(debug=True)

3.傳遞一個或者少量引數執行效果圖
少量引數效果

B.傳遞大量引數

1.傳遞大量引數index.hml程式碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首頁</title>
</head>
<body>
    html頁面作為templates資料夾下的模板!
    <p>部落格使用者名稱:{{ username }}</p>
    <p>部落格密碼:{{ password }}</p>
    <P>部落格級別:{{ level }}</P>
    <p>博主性別:{{ gender }}</p>
    <p>博主博文數:{{ number }}</p>
</body>
</html>

2.傳遞大量引數template.py程式碼

# encoding:utf-8
from flask import Flask,render_template

app = Flask(__name__)

@app.route('/')
def index():
    context = {
        'username': u'csdnABC',
        'password': u'123456',
        'level': u'部落格專家',
        'gender': u'男',
        'number': u'1000'
    }
    return render_template('index.html', **context)


if __name__ == '__main__':
    app.run(debug=True)

3.傳遞大量引數執行效果圖
大量引數執行圖