flask浅学(2)[url与函数映射]
书接上回,进行debug模式设置
为了调试方便,我们在pycharm里面设置调试模式开启,以便遇到问题能及时查看原因,具体方法
此处打钩即为开启debug模式。
新建新的url地址和视图函数
app.py
names = [
{'id': 1, 'name': '张三'},
{'id': 2, 'name': '李四'},
{'id': 3, 'name': '王五'},
{'id': 4, 'name': '赵六'},
]
@app.route('/name/list')
def book_list():
return '200'
此时访问127.0.0.1:5000只能看到返回200。如果想返回姓名列表,需要导入新的模块jsonify,此模块可以将字典转换成json的格式返回给前端
from flask import Flask, jsonify
修改新视图
@app.route('/name/list')
def name_list():
return jsonify(names)
再次访问测试页面http://127.0.0.1:5000/name/list
需要前端传入数据然后展示数据的视图类型
@app.route('/name/<int:book_id>')
# 这里的数据类型可以是any,str,等
def name_info(name_id):
# 此处是打印前端传过来的id值
print(name_id)
for i in names:
print(i['id'])
if name_id == i['id']:
return i
return f'{name_id}查无此人'
这样就完成了一个从前端浏览器传输数据到后端程序,处理完毕之后再返回给前端的整体流程。
构造url
通过def方法名称返乡查找对应的url
@app.route('/name/list')
def name_list():
for i in names:
# url_info需要两个参数,一个是方法名称,一个是传入的参数,这样就可以打印出来每个名字的url
i['url'] = url_for("name_info", name_id=i['id'])
return jsonify(names)
运行结果
在后端代码中定义此url请求的类型 ,可以是POST,也可以是GET,或者两者均可,单纯获取服务器已存在的数据,一般使用GET请求,如果是向服务器传输数据,则一般使用PSOT请求。
@app.route('/name/list', methods=['GET'])
def book_list():
for i in books:
i['url'] = url_for("book_info", book_id=i['id'])
return jsonify(books)
重定向,网址迁移或者未登录则要用到重定向的功能
扩展另一种前端传值方法:使用request方法,问号拼接参数
@app.route('/profile')
def profile():
# 导入request方法,获取前段传入的id值
user_id = request.args.get('id')
if user_id:
# 如果传入id则进入用户中心
return '用户个人中心'
else:
# 如果没有传入参数,则重定向至对应网址
return redirect(url_for('book_list'))