Flask 是一个轻量级框架,也是Python三大框架之一,Flask框架比较简单适合初学者学习。
Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。
其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 Flask 框架的核心。
Flask 是python三大web框架之一,比之其他两大框架django和tornado而言,它更加的轻量化,开发效率更高,是入门web框架的首选。
同类的python框架还有 bottle web.py 等
Flask常用扩展包:
Flask-SQLalchemy:操作数据库;
Flask-script:插入脚本;
Flask-migrate:管理迁移数据库;
Flask-Session:Session存储方式指定;
Flask-WTF:表单;
Flask-Mail:邮件;
Flask-Bable:提供国际化和本地化支持,翻译;
Flask-Login:认证用户状态;
Flask-OpenID:认证;
Flask-RESTful:开发REST API的工具;
Flask-Bootstrap:集成前端Twitter Bootstrap框架;
Flask-Moment:本地化日期和时间;
Flask-Admin:简单而可扩展的管理接口的框架
https://www.cnblogs.com/Niuxingyu/p/10139709.html 内有python web三大框架的简单介绍
终端下载插件命令 pip install Flask
建立Flask对象
@app.route('/hello/<id>/<name>') def hello(id, name): print(id) return "hello"+"你是参数是%s,%s" % (id, name)
# 导包,flask,导入flask里的重定向模块redirect from flask import Flask, redirect @app.route("/1") def reurl(): # 返回用redirect返回一个调转网址 return redirect("/")
导包,flask,导入flask里的重定向模块redirect,url_for模块, from flask import Flask, redirect, url_for
def reurl_in(): # 返回用redirect跳转一个网址再用url_for指定一个站内方法名称 return redirect(url_for('hello'))
Flask框架中的四种请求勾子
用 before_request() 装饰的函数会在请求前调用,它没有参 数。用 after_request()装饰的函数在请求结束后调用,需要 传入响应。它们必须返回那个响应对象或是不同的响应对象。但当异常抛出时,它们 不一定会被执行,这时可以使用teardown_request() 装饰器, 它装饰的函数将在响应构造后执行,并不允许修改请求,返回的值会被忽略。如果在 请求已经被处理的时候抛出异常,它会被传递到每个函数,否则会传入一个 None 。
1.在发生第一次请求之前调用 before_first_request 方法
# 装饰器后跟的是方法
@app.before_first_request
def before_first_request():
print("这是第一次请求之前调用的方法")
@app.before_request def before_request(): print("每一次调用")
@app.after_request def after_request(response): print("请求之后调用") print(response) return response
@app.teardown_request
def teardown_request(e):
print("服务器出现的错误是 %s" % str(e))
# 导包,flask,导入flask里的重定向模块,url_for站内跳转,jsonify json强转 from flask import Flask, redirect, url_for, jsonify @app.route('/json') def re_json(): # 定义好数据格式 json_dict = {'id': 10, 'title': "flask学习", 'content': "jsonify强转"} # 使用jsonify来把定义好数据的数据转换成json格式,并用return返回 return jsonify(json_dict)