Flask之模板渲染和模板传参
我们在前面的Flask脚手架的基础上,在模板中新建一个名为index.html的html文件,然后app.py文件中,引入render_template函数,在return返回render_template函数,传入的参数为刚刚新建的index.html文件。我们来看看实际效果
16.png
17.png
from flask import Flask,redirect,url_for,render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/articles/<id>')
def show_articles(id):
return '您请求的文章id是%s'%id
@app.route('/blog/')
def blog():
return '这是发布文章页面!!!'
@app.route('/login/')
def login():
return '这是登录页面,请登录!!!'
@app.route('/blog/<id>')
def redi_ct(id):
if id=='1':
return '这是发布文章页面!'
else:
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
这样,我们的前端页面就被渲染出来了。
模板传参
我们希望可以通过模板来渲染传递我们后台传入的参数,应该怎么去做呢?
1.当需要传入的参数较少时,我们可以直接在函数中传参
from flask import Flask,redirect,url_for,render_template
app = Flask(__name__)
@app.route('/')
def index():
return
render_template('index.html',username='Gaoshiguo',age='18',gender='male')#为前端页面传入三个参数:用户名,年龄和性别
@app.route('/articles/<id>')
def show_articles(id):
return '您请求的文章id是%s'%id
@app.route('/blog/')
def blog():
return '这是发布文章页面!!!'
@app.route('/login/')
def login():
return '这是登录页面,请登录!!!'
@app.route('/blog/<id>')
def redi_ct(id):
if id=='1':
return '这是发布文章页面!'
else:
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
2.当传入的参数较多时,可以采用以下方式,构建一个字典,将参数名和值以字典的方式存储,然后再直接引用即可
from flask import Flask,redirect,url_for,render_template
app = Flask(__name__)
@app.route('/')
def index():
parameter ={
'username':'高手',
'age':'18',
'gender':'男',
'height':'180cm',
}
return render_template('index.html',**parameter)
@app.route('/articles/<id>')
def show_articles(id):
return '您请求的文章id是%s'%id
@app.route('/blog/')
def blog():
return '这是发布文章页面!!!'
@app.route('/login/')
def login():
return '这是登录页面,请登录!!!'
@app.route('/blog/<id>')
def redi_ct(id):
if id=='1':
return '这是发布文章页面!'
else:
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
18.png
这样就完成了页面渲染和通过模板传递后台参数!!!