概述
这里写自定义目录标题
- 路由相关学习
- 路由查看
- 路由映射
- 路由跳转
- 路由传参
- HTTP方法
- html路由提交
路由相关学习
路由查看
在命令窗口输入:
flask routes
Endpoint Methods Rule
-------- ------- -----------------------
getIndex GET /
static GET /static/<path:filename> #flask默认的,为了方便访问我们的静态资源
Endpoint:端口,也就是视图函数的名称。
Methods:请求方法。
Rule:请求路径
另一种产看方式
在视图函数中使用
print(app.url_map)
然后启动程序访问对应的视图函数,就会打印出来路由信息
路由映射
首先,我们来看一个简单的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/<role>')
def login(role):
return redirect('/success',role = role)
@app.route('/success/<role>')
def success(role):
return 'success' + role
结果:
配合url_for传参
@app.route('/login/<role>')
def login(role):
return redirect(url_for('success',role = role))
@app.route('/success/<role>')
def success(role):
return 'success' + role
变量输出的两种方式
@app.route('/login/<role>')
def login(role):
return redirect(url_for('success',role = role))
@app.route('/success/<role>')
def success(role):
# 使用占位符
return 'success%s'%role
# 字符串拼接
# return 'success'+ role
HTTP方法
GET:以未加密的形式将数据发送到服务器。最常见的方法。
HEAD:和GET方法相同,但没有响应体。
POST:用于将HTML表单数据发送到服务器。POST方法接收的数据不由服务器缓存。
PUT:用上传的内容替换目标资源的所有当前表示。
DELETE:除由URL给出的目标资源的所有当前表示。
html路由提交
新建html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:5000/login" method="post">
<label>username:</label><input type="text" name="username" placeholder="请输入用户名"><br>
<label>password:</label><input type="password" name="password" placeholder="请输入密码">
<button type="submit">登录</button>
</form>
</body>
</html>
默认情况下,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/<role>')
# def login(role):
# return redirect(url_for('success',role = role))
@app.route('/success/<role>')
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:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:5000/login" method="post">
<label>username:</label><input type="text" name="username" placeholder="请输入用户名"><br>
<label>password:</label><input type="password" name="password" placeholder="请输入密码">
<button type="submit">登录</button>
</form>
</body>
</html>
最后
以上就是柔弱世界为你收集整理的Flask学习入门(三)-------路由路由相关学习路由查看的全部内容,希望文章能够帮你解决Flask学习入门(三)-------路由路由相关学习路由查看所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复