1. 程式人生 > >flask第十九篇——模板【3】

flask第十九篇——模板【3】

方法 base64 spa htm 復制 url emp ati str

請關註微信公眾號:自動化測試實戰

今天我們繼續模板的知識,現在我們增加字典的復雜度,這個時候在render_template第二個參數可以傳**title,以後我們會用**context代替原來的title=title

# coding: utf-8

from flask import Flask, render_template app = Flask(__name__) # type: Flask
app.debug = True

@app.route(‘/‘)
def hello_world(): title = {"tPrize": "key",
"info": {"name": u"Warren",
"age": 18,
"gender": u"男"},
"val": {"title": u‘標題‘,
"content": u‘內容‘}}

return render_template(‘post/index.html‘, **title)


if __name__ == ‘__main__‘: app.run()

相應的我們的index.html文件也要做一些修改,就是將變量處的傳參改為具體的key值,比如我們想獲取title裏面的info值,那麽我們只需要在大胡須裏寫info即可:

<!DOCTYPE html>

<html lang="en">
<head> <meta charset="UTF-8"> <title>這裏是title</title>
</head>
<body> <h1>{{ info }}</h1>

</body>
</html>

執行代碼可以看到頁面顯示的是info

的值:

技術分享圖片

html中,註釋用{# 註釋內容 #},快捷鍵是ctrl+/比如:

技術分享圖片

現在我們新建一個登錄的html文件

技術分享圖片

代碼(方便大家復制)

<!DOCTYPE html>
<html lang="en">
<head> <meta charset="UTF-8"> <title>登錄頁面</title>
</head>
<body> 這是登錄頁面
</body>
</html>

在主文件中新建login方法:

@app.route(‘/login/‘)
def login(): return render_template(‘login.html‘)

index.html文件中增加一行超鏈接:<a href=‘#‘>鏈接到登錄頁面</a>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>這裏是title</title>
</head>
<body>

{#    <p>這段代碼被註釋了</p>#}
    <h1>{{ info }}</h1>
    <a href="#">鏈接到登錄頁面</a>
</body>
</html>

現在我們想要跳轉頁面,那麽超鏈接裏`href`就要寫跳轉的url,如果粗魯一點就直接寫‘/login/‘,這樣肯定是可以的:

技術分享圖片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>這裏是title</title>
</head>
<body>

{#    <p>這段代碼被註釋了</p>#}
    <h1>{{ info }}</h1>
    <a href="/login/">鏈接到登錄頁面</a>
</body>
</html>

但是如果下次登錄頁面變成/post/login/我們還要來修改這裏的路徑,所以這時候我們就要用到url_for了。將地址改為:{{ url_for(‘login‘) }}即可,註意,url_for裏面的傳參是函數名,這樣我們即使修改路徑,只要不修改函數名,那麽就不必每次都來修改這裏的鏈接值了。

我們來頁面上通過開發者工具查看一下,發現給的路徑就是‘login‘

技術分享圖片

只要我們點擊“鏈接到登錄頁面”,頁面就會到轉到127.0.0.1:5000/login/了。

技術分享圖片

最後附上本節的所有代碼,方便大家自己下去操作:

結構:

技術分享圖片

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>這裏是title</title>
</head>
<body>

{#    <p>這段代碼被註釋了</p>#}
    <h1>{{ info }}</h1>
    <a href="{{ url_for(‘login‘) }}">鏈接到登錄頁面</a>
</body>
</html>

rendertemplateDemo.py

# coding: utf-8

from flask import Flask, render_template

app = Flask(__name__)  # type: Flask
app.debug = True

@app.route(‘/‘)
def hello_world():

    title = {"tPrize": "key",
             "info": {"name": u"Warren",
                      "age": 18,
                      "gender": u"男"},
             "val": {"title": u‘標題‘,
                     "content": u‘內容‘}}

    return render_template(‘post/index.html‘, **title)

@app.route(‘/login/‘)
def login():
    return render_template(‘login.html‘)

if __name__ == ‘__main__‘:
    app.run()

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登錄頁面</title>
</head>
<body>
    這是登錄頁面
</body>
</html>

flask第十九篇——模板【3】