- 路由相关学习
- 路由映射
- 路由跳转
- 路由传参
- HTTP方法
- html路由提交
首先,我们来看一个简单的flask程序
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "hello world"
if __name__ == '__main__':
app.run()
点击运行后,出现如下结果:
在浏览器输入http://127.0.0.1:5000/即可访问到hello_world函数所处理的数据
在flask中路由和函数绑定主要有两种方法:
第一种直接使用类似注解的方式,使用@app.route(‘/’)注解到对应的处理函数上面,例如以上代码中的
@app.route('/')
def hello_world():
return "hello world"
其中route()中的参数是字符串类型,对应请求的url。
另外一种方法是使用app.add_url_rule()函数来添加映射,add_url_rule()接受三个参数,第一个是url,第二个是url_for反转时对应的字符串,也可以不填写默认为被映射的函数名,第三个是对应的函数名称,示例如下
def hello():
return "hello"
app.add_url_rule('/','hello',hello)
这样就把"/hello"和hello函数绑定到一起了。
路由跳转在flask中路由跳转使用redirect,首先需要引入redirect模块 ,示例如下:
@app.route('/login/')
def login():
return redirect('/success')
@app.route('/success/')
def success():
return 'success'
使用url_for可以使用函数名映射对应的url如:
@app.route('/login/')
def login():
return redirect(url_for('success'))
@app.route('/success/')
def success():
return 'success'
路由传参
直接使用redirect
@app.route('/login/')
def login(role):
return redirect('/success',role = role)
@app.route('/success/')
def success(role):
return 'success' + role
结果:
配合url_for传参
@app.route('/login/')
def login(role):
return redirect(url_for('success',role = role))
@app.route('/success/')
def success(role):
return 'success' + role
变量输出的两种方式
@app.route('/login/')
def login(role):
return redirect(url_for('success',role = role))
@app.route('/success/')
def success(role):
# 使用占位符
return 'success%s'%role
# 字符串拼接
# return 'success'+ role
HTTP方法
GET:以未加密的形式将数据发送到服务器。最常见的方法。
HEAD:和GET方法相同,但没有响应体。
POST:用于将HTML表单数据发送到服务器。POST方法接收的数据不由服务器缓存。
PUT:用上传的内容替换目标资源的所有当前表示。
DELETe:除由URL给出的目标资源的所有当前表示。
新建html文件
Title
默认情况下,Flask路由响应GET请求。但是,可以通过为route()装饰器提供方法参数来更改此首选项
@app.route('/login',methods = ['POST','GET'])
def loginin():
if request.method == 'POST':
username = request.form['username']
passqord = request.form['password']
return redirect(url_for('success',role = username))
else:
username = request.args.get('username')
passqord = request.args.get('password')
return redirect(url_for('success',role = username))
结果:
完整代码:
python:
from flask import Flask,redirect,url_for,request
app = Flask(__name__)
@app.route('/')
def hello_world():
return "hello world"
def hello():
return "hello"
app.add_url_rule('/hello','hello',hello)
# @app.route('/login/')
# def login(role):
# return redirect(url_for('success',role = role))
@app.route('/success/')
def success(role):
# 使用占位符
return 'success%s'%role
# 字符串拼接
# return 'success'+ role
@app.route('/login',methods = ['POST'])
def loginin():
if request.method == 'POST':
username = request.form['username']
passqord = request.form['password']
return redirect(url_for('success',role = username))
else:
username = request.args.get('username')
passqord = request.args.get('password')
return redirect(url_for('success',role = username))
if __name__ == '__main__':
app.run()
html:
Title



