使用: from flask import request
@app.route('/register2', methods=['get', 'post'])
def register2():
if request.method == "POST":
username = request.form.get("username")
password = request.form.get("password")
re_password = request.form.get("repassword")
if password == re_password:
return "注册成功"
else:
return "两次密码不一致"
else:
# print(request.args)
return "注册成功,用户名称是:%s, 用户地址是:%s,结果是: %s" % (
request.args.get('username'), request.args.get('address'), str(request.args))
endpoint : url的函数名称
value: url的可变参数

redirect("/")替换成: redirect(url_for("index"))
总结: 视图函数的返回值response响应
1) str ---自动转成response对象
2) dict: json对象
3) response对象: response对象
4) make_response对象: response对象
5) redirect() 重定向--状态码302
6) render_tempate() 模板渲染 + 模板
”url_for“第一个参数,是视图函数的名字的字符串,后面的参数就是传递给’url‘,如果传递的参数之前在’url‘中定义,
那么这个参数就会被当成”path“的形式给”url“,。 如果这个参数之前没有在’url‘中定义,那么将变成查询字符串的形式放在’url‘中
url_for(endpoint, **value)
1) 语法: url_for('static', filename='路径')
2) 静态文件: flask会从static文件加中开始寻找,所以不需要再写static这个路径
3) 可以在模板中加载:css/js/image文件
- 更方便的获取url, 如果url函数名被修改了,也不会到处去修改
- ’url_for‘会自动的处理特殊字符,不需要手动处理
from flask import render_template
模板的语法:
- 在模板中获取view中传递的变量值:{{变量值ket}}
- render_template(”模板名称“,key1=value1,key2=value2)
举例:
return render_template("register.html",name=name,age=age)
1) 前端用{{}}接收变量
2) 如果驶入函数没有传递变量,则前端莫瑞诺以空白字符串填充
3) render_template与米板语言结合
--- {{list.0}} 同list[0] {{dict.key}} 同{{dict.get(key)}} {{girl.name}} 同 {{对象.属性}}
--- 控制块 {% if % } {% endif %}
{% for % } {% endfor if %}
模板语法中的过滤器:
{{变量名}过滤器(*agrgs)}} / {{变量名|过滤器}},常见过滤器:
1) safe 禁用
2) captalize : 单词首字母大写 {{n1|capitalize}}
3) lower &upper : 大小写转换
4)title: 一句话中的每个单词首字母大写
5) reverse: 翻转
7) truncate: 字符串截断
from werkzeug.utils import redirect
如果使用JSON函数,则需要导入json库: import json
json.dumps : 将Python对象编码成Json字符串
json.loads : 将已编码的JSON字符串解码为Python对象
重定向: 网络请求被重新定个方向转到其它位置redirect("location", code=302,response=None):
1) location(str) ---- 响应应该重定向到的位置
2) code(int) --- 重定向状态代码,默认302
3) Response(class) ----在实例化响应时使用的Response类
redirect有2次响应:
1) 302状态码 + location
2) 返回location请求的地址内容
注明: redirect本身是不能像render_template那样来传递参数
如果要传递的参数只是像string,int这样的数据,可以用u'r'l_for来作为location参数,而url_for是可以传递这些简单数据
redirect(url_for())传递参数方法
from flask import Flask, Response, render_template, request, url_for, redirect
app = Flask(__name__)
app.config['DEBUG'] = True
app.config["ENV"] = "development"
@app.route("/index", endpoint="home")
def index():
return "这是首页"
@app.route("/show1")
def show1():
girls = {"nv1", "nv2", 'nv3', 'nv4'}
users = [
{"username": "阿朱001", "password": "123qwe1231", "re_password": "123qwe1231", "phone": "11111"},
{"username": "阿朱002", "password": "123qwe1232", "re_password": "123qwe1232", "phone": "22222"},
{"username": "阿朱003", "password": "123qwe1233", "re_password": "123qwe1233", "phone": "33333"},
{"username": "阿朱004", "password": "123qwe1234", "re_password": "123qwe1234", "phone": "44444"},
{"username": "阿朱005", "password": "123qwe1235", "re_password": "123qwe1235", "phone": "55555"}
]
return render_template("show_list.html", girls=girls, users=users)
@app.route("/users//" )
def default_key(pageNo=0, pageSize=20):
if pageNo == 0:
return f"获取第{pageNo}页数据,每页条数:{pageSize}"
else:
# 将show1函数以字符串方式传到url_for里边
# url_for第一个参数是视图函数名/视图函数endpoint----可以理解为: endpoint是视图函数的别名
url_for('show1')
return "show1"
@app.route("/list_a//" )
def list_A(pageNo=0, pageSize=20):
# 重定向后, 结果显示的就是目标路由对应视图函数的内容
# return redirect(url_for('index', pageNo=pageNo, pageSize=pageSize)) # 视图函数名
# return redirect(url_for('home', pageNo=pageNo, pageSize=pageSize)) # 视图函数别名:endpoint
return redirect(url_for('show1', pageNo=pageNo, pageSize=pageSize))
# 通过路由接收参数
# 这里制定了接收参数的类型,不符合会报错
# 可以将string改成path,这样username就会被当成路径来接收,也就是
@app.route('/lists/?/?' , methods=['GET', 'POST'])
def lists_redirect(pageNo=0, pageSize=20):
return pageNo, pageSize

以上基本都是对于get请求定义的说明,如果post/delete/put请求接口body不为空, get请求param不为空,该如何提取数据。看如下:postman接口调试截图+代码对比


