Flask框架的简单使用(Python3)

Mentor第一次和我说用flask框架的时候,我始终感觉云里雾里,不知道是个算法还是模型什么的,瞎摸索了好久,终于明白如何使用了,现在给大家分享一下(我这里只是非常浅显的使用,供大家参考)。这份文档中的代码使用Python3运行。

一、flask框架简介

Flask是一个使用Python编写的轻量级Web应用框架,较其他类型框架更为灵活、轻便、安全且容易上手。
我对flask框架的理论知识并不熟悉,这里引用其他人写的,给自己科普一下~
“Flask主要包括Werkzeug和Jinja2两个核心函数库,它们负责业务处理和安全方面的功能,这些基础函数为web项目开发过程提供了丰富的基础组件。
Werkzeug(负责业务处理)库十分强大,功能比较完善,支持URL路由器请求集成,一次可以响应多个用户的访问请求;支持Cookie和会话管理,通过身份缓存数据建立长久连接关系,并提高用户访问速度;支持交互式Javascripts调试,提高用户体验;可以处理HTTP基本事务,快速响应客户端推送过来的访问请求。
Jinja2(安全方面)库支持自动HTML转移功能,能够很好控制外部黑客的脚本攻击。”
引用源自: https://blog.csdn.net/langdei/article/details/102537575?utm_source=app&app_version=4.5.8

Flask的基本模式
Flask的基本模式为在程序里将一个视图函数分配给一个URL,每当用户访问这个URL时,系统就会执行给该URL分配好的视图函数,获取函数的返回值并将其显示到浏览器上:
在这里插入图片描述

二、安装 flask

安装 flask 包
基于Pycharm
1、 键入 win键+R,进入 cmd 命令,输入 pip install flask

Microsoft Windows [版本 10.0.17134.829]
(c) 2018 Microsoft Corporation。保留所有权利。

C:\Users\Administer> pip install flask

2、直接在pycharm 的终端(Terminal)命令中安装,Terminal执行命令与在 cmd命令中类似,如果pycharm无法正常执行代码,试一下 在 Terminal中执行如果Terminal 可以执行出结果,说明pycharm 环境配置出现了问题(可以考虑换个环境试试)

  • Terminal 在界面做下方位置,点击即可进入终端命令
    在这里插入图片描述
  • 输入 pip install flask即可(我这里是已经下载好了)
    在这里插入图片描述

三、Flask 简单使用

导入包

from flask import Flask

1、一个简单的例子

from flask import Flask
app = Flask(__name__) # 实例app
@app.route("/") # 路由
def hello_world():
    return 'hello world' # 返回值
if __name__ == '__main__':
    app.run(host='127.0.0.1',port=8080,debug = True)
    # 开启 debug 模式
    # app.run(host='127.0.0.1', port=8080)

点击运行之后,出现如下的结果:
在这里插入图片描述
上面的 warning 我搜了一下解决方式,尝试了几种方法,要么运行不出来,要么报错,不管暂时不影响运行,就先不管了

查看结果方式
1、浏览器
复制上面运行出来的url( 网址) http://127.0.0.1:8080/,打开浏览器,输入即可url即可,得到结果如下:
在这里插入图片描述
2、git bash
首先需要在电脑里安装 git bash,使用的时候,点击桌面右键即可
在这里插入图片描述
输入 curl + 网址
在这里插入图片描述
可能是我没设置好吧,输出结果有一点点奇怪hhh

2、path:包含斜杠的路径,用于路径的拼接

from flask import Flask
app = Flask(__name__) # 实例app
@app.route("/test") # 路由
def hello_world():
    return 'hello world' # 返回值
if __name__ == '__main__':
    app.run(host='127.0.0.1',port=8080,debug = True)

观察到 @app.route("/test"),那么输入的url就要加上 /test
在这里插入图片描述

四、flask 请求参数

方法作用
args获取 get 请求的参数
form获取 post 请求的参数

1、flask get 请求
第一步:导入包

from flask import request

默认支持 get 请求

请求单个参数

from flask import Flask,request,jsonify
app = Flask(__name__) # 实例app
@app.route('/test')
def test():
    # 获取 get 请求参数
    id = request.args.get('id')
    return 'hello world '+id
if __name__ == '__main__':
    app.run(host='127.0.0.1',port=8080,debug = True)

输入参数要先在路径后面加个 “?” 号,参数名 id 与代码中一致,注意 id 和等号之间不要加空格(会报错),也不要多此一举加引号,因为地址符输出默认为字符串类型,之前就是加引号,导致出错,找了好久才发现问题。
在这里插入图片描述

请求多个参数 用 &

from flask import Flask,request,jsonify
app = Flask(__name__) # 实例app
@app.route('/test')
def test():
    # 获取 get 请求参数
    id = request.args.get('id')
    score = request.args.get('score')
    score = float(score) # score 默认为字符串类型,需要转为 float型
    res = {}
    res['id'] = id
    res['score'] = score
    return res  # 以字典形式输出
if __name__ == '__main__':
    app.run(host='127.0.0.1',port=8080,debug = True)

两个参数之间用 & 来连接
在这里插入图片描述
需要注意: The return type must be a string, dict, tuple, Response instance, or WSGI callable
所以不可以直接返回一个列表或float型等的值
例如:像下面这样写返回值是会报错的

def test():
    id = request.args.get('id')
    score = request.args.get('score')
    res = [id,score]
    return res # 这是一个 list

改成下面形式就可以了:

def test():
    id = request.args.get('id')
    score = request.args.get('score')
    res = [id,score]
    return jsonify(res)

传入的值为一个长字符串和一个字典

from flask import Flask,request,jsonify
app = Flask(__name__) # 实例app
@app.route('/similarity')
def test():
    # 获取 get 请求参数
    name = request.args.get('name')
    tag = request.args.get('tag')
    res = {'name':name,'tag':eval(tag)}# str类型转为 字典类型
    return jsonify(res)
if __name__ == '__main__':
    app.run(host='127.0.0.1',port=8080,debug = True)

在浏览器的地址栏输入

http://127.0.0.1:8080/similarity?name=Scalloped Floral Lace Bralette&tag={'Style':['casual'],'Color':['black']}

会自动识别为

http://127.0.0.1:8080/similarity?name=Scalloped%20Floral%20Lace%20Bralette%20&tag={%27Style%27:[%27casual%27],%27Color%27:[%27black%27]}

输出结果为
在这里插入图片描述
传参调用脚本

@app.route('/mostSimi')
def getSimiItem():
    id = request.args.get('id')
    score = request.args.get('leastScore')
    res = sim_model.similarity_by_id(id, score)
    # 这里similarity_by_id是类sim_model中的方法

2、flask post 请求
flask 默认不支持 post 请求,需要增加请求方式

from flask import Flask,request,jsonify
app = Flask(__name__) # 实例app
@app.route('/test',methods = ["post"])
def demo():
    print(request.form)
    name = request.form.get("name")
    age = request.form.get("age")
    return jsonify([name,int(age)])
if __name__ == '__main__':
    app.run(host='127.0.0.1',port=8080,debug = True)

啊居然运行不出来,原来get是用URL传参,post则是有一个专门的通道?等我研究研究

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值