路由
路由参数
可以通过标记部分将可变部分添加到URL。然后函数接受作为关键字参数,或者你可以使用转换器来指定参数类型。
@app.route('/user/<username>') def show_user_profile(username) return 'user %s'%username @app.route('/post/<int:post_id>') def show_post(psot_id): return 'Post %s' %post_id @app.route('/path/<path:subpath>') def_show_subpath(subpath): return 'Subpath %s' %subpath
转换器类型:
string (默认)接受不带斜杠的文本 int 接受正整数 float 接受正浮点值 path (❤ ω ❤)可看作接受斜杠的string uuid 接受UUID字符串
url_for
url_for() 函数最简单的用法是以视图函数名作为参数, 返回对应的 URL。
@app.route('/user/<username>') def show_user_profile(username): #返回函数getAllUsers所对应的路由 s=url_for('getAllUsers')
redirect
from flask import Flask,url_for,redirect ... @app.route('/user/<username>') def show_user_profile(username): #返回函数getAllUsers所对应的路由 s=url_for('getAllUsers') #/allusers/ #重定向到/allusers/ return redirect(s)
蓝图
什么是蓝图?
一个蓝图定义了可用于单个应用的视图,模板,静态文件等等的集合。我什么时候会用到蓝图?
蓝图的杀手锏是将你的应用组织成不同的组件,比如把admin,user相关的视图方法分为两个组件,一个是admin组件,一个是user组件.这时我们可以创建蓝图
# app.py from flask import Flask app=Flask(__name__) # config.py host='0.0.0.0' port=5001 debug=True # route.py from app.app import app from app.route_user import user_app @app.route('/') def index(): return "主页" @app.errorhandler(404) def miss(e): return app.register_blueprint(user_app,url_prefix='/user') # 注册user蓝图 # route_user.py from flask import Blueprint, request user_app = Blueprint('user', __name__) # 创建一个蓝图对象,用参数name和import_name初始化 @user_app.route('/') def index(): return '用户首页' @user_app.route('/add') def add(): return '增加用户' @user_app.route('/login', methods=['POST', 'GET']) def login(): md = str(request.method) if md.lower() == 'get': return '你将看到登录页面效果' elif md.lower() == 'post': # 第一种方式 # post:form-data # post:x-www-form-urlencoded # key一定要与客户端提交的字段保持一致 # print(request.form) # ImmutableMultiDict([('userid', '001'), ('password', '0522')]) # print(request.form['userid']) # print(request.form['password']) # 第二种方式 # values既可以接受GET参数也可以接受POST参数 # print(request.values['userid']) # print(request.values['password']) print(request.method) print(request.url) print(request.base_url) return '..............' else: return '我什么都没有做' ''' get数据格式 url?key=value&key2=value2 请求数据和路由没有关系 ''' @user_app.route('/search') def search(): # 获取get数据的方式一 # args=request.args # print(args) # print(args['id']) # print(args.get('password')) # 第二种方式 # print(request.args['id']) # print(request.args['password']) # 第三种方式 print(request.values['id']) print(request.values['password']) print(request.url) print(request.base_url) return '..............'