浙教版必修2 Flask框架使用总结
1
创建第一个最简单的网页应用
from flask import Flask #从flask库中导入Flask类
app = Flask(__name__) #创建一个web应用实例app
@app.route('/') #设置路由,指明地址是根路径
def index(): #创建视图(和路由成对使用)
return "这是我的第一个网页程序!" #返回网页内容
if __name__=='__main__': #运行web服务器
app.run()
(左右滑动查看)
控制台输出
当用浏览器打开网页时,Web服务器将受到一条GET请求。
浏览器界面
2
创建带有参数的新网页(路由)
#2.创建带有参数的新网页(路由)
from flask import Flask #从flask库中导入Flask类
app = Flask(__name__) #创建一个web应用实例app
@app.route('/') #设置路由,指明地址是根路径
def index(): #当请求的地址符合路由规则时,就会进入该函数。
return '这是我的第一个网页程序!'
@app.route('/hello') #添加新路由
def hello(): #路由对应的视图(hello为函数名,可以更换)
return '你好!'
if __name__ == '__main__':
app.run()
(左右滑动查看)
浏览器界面:注意URL的变化
3
使用变量
#3.使用变量
from flask import Flask #从flask库中导入Flask类
app = Flask(__name__) #创建一个web应用实例app
@app.route('/hello/<name>') #设置路由,URL
def index(name): #当请求的地址符合路由规则时,就会进入该函数。
return 'hello,%s!'%name
if __name__ == '__main__':
app.run()
(左右滑动查看)
浏览器界面:注意URL和显示内容
4
使用HTML模板,并传递变量
#3.使用HTML模板,并向模板中传递变量
from flask import Flask,render_template #从flask库中导入Flask类,render_template函数
app = Flask(__name__) #创建一个web应用实例app
@app.route('/') #设置路由,指明地址是根路径
def index(): #当请求的地址符合路由规则时,就会进入该函数。
return render_template('text1.html',s="hello world!") # 引用templates中的html模板,并向模板中传递变量
if __name__ == '__main__':
app.run()
(左右滑动查看)
HTML代码:注意变量的传递和HTML中变量的格式
浏览器显示:注意网页标题
注意:HTML模板需要放在 templates文件夹下,这是Flask内部定义的默认路径。
5
Flask_wtf表单库的使用
#5.用flask_wtf表单库创建表单
from flask import Flask,render_template,request
from flask_wtf import FlaskForm #导入表单模块
from flask_bootstrap import Bootstrap #导入网页模板工具模块
from wtforms import StringField, PasswordField, SubmitField #导入表单相关模块
app = Flask(__name__)
app.config['SECRET_KEY'] = 'hard_to_guess_string' #表单内容通过加密传输,这行用于设置密码
bootstrap = Bootstrap(app) #初始化网页模板工具
class Formload(FlaskForm): #设置网页表单类
name = StringField("用户名:") #字符输入框
Password = PasswordField("密码:") #密码输入框
Submit = SubmitField("登录") #提交按钮
@app.route('/',methods=['GET', 'POST'])
def result():
form = Formload() #引用表单
if request.method == 'POST': #收到POST信息
if form.name.data == form.Password.data:
return render_template('text.html',s = form.name.data)
else:
return render_template('load.html',form=form)
else:
return render_template('load.html',form=form)
#引用templates中的html模板,并向模板中传递变量
if __name__ == '__main__':
app.run(debug=True) #调试模式
(左右滑动查看)
注意:代码中使用 request.method== 'POST'接受按键按下后表单的返回值。
课本上采用的是form.validate_on_submit()检测按键按下事件,两者效果基本等价。
load.html代码
text.html代码
浏览器登陆(load.html模板)
浏览器输入admin结果
浏览器输入rose结果
6
附录