---恢复内容开始---
Flask
Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。
Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。
比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。
其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 Flask 框架的核心。
一些Flask框架的基本操作
#建立flask对象
app = Flask(__name__)
#使用flask路由器,指定网址和控制器
@app.route('/')
def index():
return "hello world sjgbd kas "
#给文章增加参数功能使用<变量名称>,路由方法要和路由定义的参数同步
@app.route('/hello/<id>/<name>')
def hello(id,name):
print(type(id))
return "hello world ,你的参数是 %s,%s" % (id,name)
注意参数id和name默认为str类型,若要指定类型:
@app.route('/hello/<int:id>')
def hello(id):
return 'hello %d' % id
#使用重定向模块来进行跳转,要先导入redirect模块
@app.route('/1')
def reur1():
return redirect('http://www.baidu.com')括号中填写的是需要跳转的路径网址
#使用url_for方法来实现站内跳转,参数指定路由方法名称
@app.route('/2')
def reurl_in():
return redirect(url_for('hello'))注意url_ffor 方法括号中写入的是路由方法名称,不用添加括号
#使用jsonify模块来让网页直接显示json数据,methods方法是用发来指定发送方式
@app.route('/json',methods=['POST'])
def re_json():
json_dict = {'id':10,'title':'flask应用','content':'flask格式化'}
#使用jsonfy来将定义好的数据转换成json格式
return jsonify(json_dict)
捕获异常 errorhandler 装饰器
#flask统一对状态码捕获异常,用来进行友好提示,提高用户体验
@app.errorhandler(405)
def internal_server_error(e):
return "这个接口不能被get请求到,只能post请求"
#flask统一对状态码捕获异常,用来进行友好提示,提高用户体验
@app.errorhandler(404)
def internal_server_error(e):
return "网页不存在或已被删除"
请求钩子
在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,
比如: 在请求开始时,建立数据库连接; 在请求开始时,根据需求进行权限校验;
在请求结束时,指定数据的交互格式;
为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子。
请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:
#在第一次请求之前调用
@app.before_first_request
def before_first_request():
print("这是第一次请求之前调用的方法")
#在每一次请求之前调用
@app.before_request
def before_request():
print("每一次请求之前调用这个")
#在请求之后调用的方法,必须传响应参数,然后将响应内容返回
@app.after_request
def after_request(response):
print("在请求之后调用这个方法")
return response
#在请求之后调用服务器出现的错误信息
@app.teardown_request
def teardown_request(e):
print("打印服务器出现的错误是 %s " % str(e))
程序加载配置的三种方式:
1#从配置文件里来加载配置
# app.config.from_pyfile('config.ini')
创建配置文件 config.ini,在配置文件中添加配置
运行测试,在代码保存后直接保存 会自动重启服务
2#从环境变量中来加载配置
# app.config.from_envvar('app_config')
这是在环境变量中设置配置通过代码来加载配置
3#从配置对象来加载配置、
这个是通过写代码,创建一个类来配置对象
#建立一个配置类
class Config(object):
DEBUG = True
JSON_AS_ASCII = False
# app.config.from_object(Config)
---恢复内容结束---