笔记-PythonWEB框架之Flask

Python主流WEB框架对比

Django:1个重武器,包含了web开发中常用的功能、组件的框架;(ORM、Session、Form、Admin、分页、中间件、信号、缓存、ContenType…);

Tornado:2大特性就是异步非阻塞、原生支持WebSocket协议;

Flask:封装功能不及Django完善,性能不及Tornado,但是Flask可扩展性强,因为flask的第三方开源组件丰富;

Bottle:比较简单;

结论

小型web应用设计的功能点不多使用Flask;

大型web应用设计的功能点比较多使用的组件也会比较多,使用Django(自带功能多不用去找插件);

如果追求性能可以考虑Tornado;

WSGI介绍

Django使用wsgiref模块Flask使用Werkzeug模块实现了WSGI协议。

HTTP协议是建立在TCP协议之上的,实现UWSGI协议本质是实现Socket服务端,也就是TCP层实现HTTP请求的接收、 对请求内容进行预处理如分割HTPP请求内容的Header和body,然后再触发后面的Django/Flask框架。

Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架

pip3 install flask           #安装flask

Flask框架是基于werkzeug模块实现的。

from werkzeug.wrappers import Request,Response
from werkzeug.serving import run_simple
@Request.application
def hello(request):
    return Response("Hello World")

if __name__ == '__main__':
    #请求一旦到来,执行第3个参数,hello(上下文)
    run_simple('localhost', 4000, hello)

Flask简单使用
View Code

一、配置文件

app=Flask(name,template_folder=‘templates’,static_url_path=‘/static/’,static_path=‘/zhanggen’)

模板路径: template_folder=‘templates’

静态文件路径:static_url_path=‘/static/’

静态文件引入别名:static_path=‘/zhanggen’

设置为调试环境:app.debug=True (代码修改自动更新)

设置json编码格式 如果为False 就不使用ascii编码:app.config[‘JSON_AS_ASCII’]=False

设置响应头信息Content-Type app.config[‘JSONIFY_MIMETYPE’] =“application/json;charset=utf-8” (注意 ;charset=utf-8)

二、路由系统

1.动态路由(url传参)

@app.route(‘/user/’)
接收字符串类型参数

@app.route(‘/post/int:age’)
接收整型数字参数

@app.route(‘/post/float:salary’)
接收浮点型数字参数

@app.route(‘/post/path:path’)
接收URL链接类型参数

2、指定允许的请求方法

@app.route(‘/login’, methods=[‘GET’, ‘POST’])
指定允许的请求方法

3、通过别名反向生成url
url_for()反向生成url

4、通过app.add_url_rule()调用路由
app.add_url_rule()方法调用路由

5、扩展路由功能:正则匹配url

如果需要一些复杂的匹配规则可以自定义正则匹配url
自定义正则表达式匹配路由

四、视图

1、给Flask视图函数加装饰器

注意如果要给视图函数加装饰器增加新功能,一点要加在路由装饰器下面,才会被路由装饰器装饰,才能生生成url关系;
View Code

2、request和response

a.请求相关信息

request.method: 获取请求方法

request.json

request.json.get("json_key"):获取json数据 **较常用      

request.argsget('name') :获取get请求参数   

request.form.get('name') :获取POST请求参数

request.form.getlist('name_list'):获取POST请求参数列表(多个)

request.values.get('age') :获取GET和POST请求携带的所有参数(GET/POST通用)

request.cookies.get('name'):获取cookies信息

request.headers.get('Host'):获取请求头相关信息

request.path:获取用户访问的url地址,例如(//login// index/);

request.full_path:获取用户访问的完整url地址+参数 例如(/login/?age=18)

request.script_root: 抱歉,暂未理解其含义;

request.url:获取访问url地址,例如http://127.0.0.1:5000/?age=18;

request.base_url:获取访问url地址,例如 http://127.0.0.1:5000/;

request.url_root

request.host_url

request.host:获取主机地址

request.files:获取用户上传的文件

obj = request.files['the_file_name']

obj.save('/var/www/uploads/' + secure_filename(f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大白砌墙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值