我是靠谱客的博主 柔弱世界,最近开发中收集的这篇文章主要介绍Flask学习入门(三)-------路由路由相关学习路由查看,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这里写自定义目录标题

  • 路由相关学习
  • 路由查看
    • 路由映射
    • 路由跳转
    • 路由传参
    • 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学习入门(三)-------路由路由相关学习路由查看所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部