# 路由 + 视图函数from flask import Blueprint, request, render_template, jsonify, Response, redirect, url_for# from models import *#蓝图
# 创建蓝图对象
# 第一个参数:蓝图的名字
# 第二个参数:蓝图的包名
blue = Blueprint('user', __name__,)@blue.route('/') # 路由
def index():return 'user index'# 请求和响应# Request 对象 导入from flask import request
@blue.route('/request/', methods=['GET', 'POST'])
def get_request():pass# print(request)#重要属性#get请求 打印请求的参数或属性print(request.method) #请求方法 GET或POST http://127.0.0.1:5000/request/# 请求参数 http://127.0.0.1:5000/request/?name=zhangsan&&name=lishi&age=18# 输出一个类字典对象:ImmutableMultiDict([('name', 'zhangsan'), ('name', 'lishi'), ('age', '18')])#ImmutableMultiDict:类字典对象、可以出现重复的keyprint(request.args)#参数取值print(request.args.get('name'))print(request.args.getlist('name'))# print(request.args.get['name'], request.args['age'])#post请求print(request.form) #打印post请求过来的参数print(request.form.get('name')) #取值#cookieprint(request.cookies) # 打印cookie#不常用#获取请求的路径#请求:http://127.0.0.1:5000/request/?name=zhangsan&&name=lishi&age=18print(request.path) # /request/print(request.url) # http://127.0.0.1:5000/request/?name=zhangsan&&name=lishi&age=18print(request.full_path) # /request/?name=zhangsan&&name=lishi&age=18print(request.base_url) # http://127.0.0.1:5000/request/print(request.host_url) # 127.0.0.1print(request.remote_addr) # 127.0.0.1:5000,客户端的ip#请求头print(request.headers) # 请求头print(request.files) # 上传的文件print(request.user_agent) # 用户代理、浏览器信息return 'get_request'#response响应
@blue.route('/response/')
def get_response():pass#响应的几种方式# 1. 返回字符串# return 'response'# 2.模板渲染(前后端不分离)# return render_template('index.html', name='zhangsan', age=18)# # 3.返回json数据(前后端分离)# data = {'name': 'zhangsan', 'age': 18}# # return data# return jsonify(data) # 序列化、将字典转为字符串## 4. 自定义响应对象html = render_template('index.html', name='zhangsan', age=18)print(html, type(html))# res = make_response(html, 200)res = Response(html, 200)return res# 重定向
@blue.route('/redirect/')
def get_redirect():pass# 重定向的集中方式# 1. 重定向到网站# return redirect('https://www.baidu.com')# 2. 重定向到自身的路由# return redirect('/resonpse/')# #3. url_for('蓝图名称.视图函数名称') -》反向解析 根据函数名找到路由# # blue = Blueprint('user', __name__,) 这里user是蓝图的名称# ret = url_for('user.get_response')# print(ret) #/response/# return redirect(ret)#或 直接传入参数ret2 = url_for('user.get_request', name='zhangsan', age=18)return redirect(ret2)