flask第十九篇——模板【3】
阿新 • • 發佈:2018-04-04
方法 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】