栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Flask学习入门(二)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask学习入门(二)

这里写自定义目录标题
  • 路由相关学习
    • 路由映射
    • 路由跳转
    • 路由传参
    • 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路由提交

新建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


    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938199.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号