目录
一、request对象
1.request直接从flask模板中导入
2. Request:将请求行、请求头、请求体封装到一个request对象里
请求方法:
1>request.headers:获取请求头
2>method:请求方法,比如POST、GET
3>data:包含了请求的数据,并转换为字符串
4>path:获取请求文件路径
5>request.args.get:用于获取get请求参数
from flask import Flask,request
app=Flask(__name__)
app.config['ENV']='development'
app.config['DEBUG']='True'
@app.route('/index')
def index():
print(request.headers)#request是一个对象,对象访问属性,调用方法
print(request.path)
return "Hello!"
if __name__ == '__main__':
app.run()
二、模板的使用
1.模板语言:被设计自动生成文档的简单文本格式,模板语言中,一般会把一些变量传给模板,替换模板特定位置上预先定义好的变量名
2.渲染模板函数:
flask提供的render_template函数封装该模板引擎
render.template函数第一个参数是模板的文件名,后面参数都是键值对,表示模板中变量对应的真实值
3.变量代码块:{ {}}来表示变量名,这种语法叫做变量代码块
4.注释:用{# #}来进行注释
5.控制代码块:用{% %}定义的控制代码块,可以实现一些语言层次的功能,比如循环或if语句
例:利用render_template如何返回一个网页,以及如何给模板填充数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>模块</title>
</head>
<body>
这是首页<br>
这是模板<br>
{#下面是一个变量代码块的使用#}
{
{url_str}} <br>
{#列表的传入与使用#}
{
{my_list}} <br>
{
{my_list.1}} <br>
{
{my_list[1}} <br>
{
{my_dict}} <br>
{
{my_dict.url}} <br>
{
{my_dict['url']}} <br>
<hr>
{% for num in my_list %}
{
{num}} <br>
{% end for %}
</body>
</html>
from flask import Flask,render_template
app=Flask(__name__)
@app.route('/')
def index():
#如果需要传入网址
url_str='www.itheima.com'
my_list=[1,2,3,4]
my_dict={
'name':'百度',
'url':'www.baidu.com'
}
#通常,模板中使用的变量名和要传递的数据名保持一致
return render_template('index.html',url_str=url_str,my_list=my_list,my_dict=my_dict)
if __name__ == '__main__':
app.run(debug=True)
三、过滤器的使用
1.过滤器的本质是函数,用于修改变量的显示、进行格式化以及运算等等,模板中不能直接调用Python中某些方法,用到了过滤器
使用方式:变量名|过滤器
{ {variable|filter_name}}
2.常见过滤器的使用
1>safe:禁用转义
<p>{ {'<em>hello</em>'|safe}}</p>
2>capitalize:首字母大写
<p>{ {'hello'|capitalize}}</p>
3>lower:转换成小写
<p>{ {'HELLO'|lower}}</p>
4>upper:转换成大写
<p>{ {'hello'|upper}}</p>
5>title:每个单词首字母大写
6>reverse:字符串反转
7>format:格式化输出
8>sort:排序
<p>{ { [5,4,9,6,3,0,2] |sort }}</p>
3.过滤器链式调用:{ { "hello,world"|reverse|upper}},从第一个往后依次调用
四、Web表单
1.web表单是HTML页面中负责数据采集的部件,表单由三部分组成:表单标签、表单域、表单按钮。Flask中,为了处理表单,一般使用Flask-WTF扩展,封装了WTForms,并且有验证表单数据的功能
2.例:简单的表单验证
from flask import Flask,render_template,request
app=Flask(__name__)
'''
目的:实现一个简单的登录的逻辑处理
1.路由有get和post两种请求方式-->判断请求方式
2.获取请求的参数
3.判断参数是否填写&密码是否一致
4.没有问题,返回success
'''
@app.route('/',methods=['GET','POST'])
def index():
if request.method=='POST':
username=request.form.get('username')
password=request.form.get('password')
password2= request.form.get('password2')
print (password)
if not all([username,password,password2]):
print ('参数不完整')
elif password!=password2:
print('密码不一致')
else:
return 'success'
return 'success'
return render_template('index1.html')
if __name__ == '__main__':
app.run(host='0.0.0.0',port=8888,debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录界面</title>
</head>
<body>
<form method="post">
<label>用户名:</label><input type="text" name="username"><br>
<label>密码:</label><input type="password" name="password"><br>
<label>确认密码:</label><input type="password" name="password"><br>
<input type="submit" value="提交"><br>
{% for message in get_flashed_messages() %}
{
{message}}
{% end for %}
</form>
</body>
</html>