Hello Flask (2)

通过设置mimetype可以返回不同类型的数据,常用的有纯文本,html,xml,json
返回json格式数据时Flask提供一种更简洁的方式

return jsonify({'name':'sfencs'})

这一个东西把生成response对象,设置数据类型,json序列化都做完了。

请求钩子

请求钩子是在视图函数处理请求的前或者后的阶段进行的处理函数
Flask默认实现的五种请求钩子:

before_first_request 处理第一个请求之前

before_request 处理请求之前

after_request 处理请求之后

after_this_request 在视图函数内注册一个函数,会在这个请求结束后运行

teardown_request 在请求结束后,如果有异常也会执行的钩子,它在所有钩子中最后一个执行,需要传入异常对象

钩子通过装饰器注册,比如

@app.before_request def func():   pass

after_request和after_this_request的钩子必须接受一个响应类对象做参数,最后并将其返回

配置变量

Flask中,配置变量通过Flask对象的config属性配置与获取
在Flask对象的源码中看到config中已经存储了很多默认值

default_config = ImmutableDict({ 'ENV': None, 'DEBUG': None, 'TESTING': False, 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SECRET_KEY': None, 'PERMANENT_SESSION_LIFETIME': timedelta(days=31), 'USE_X_SENDFILE': False, 'SERVER_NAME': None, 'APPLICATION_ROOT': 'http://www.likecs.com/', 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None, 'SEND_FILE_MAX_AGE_DEFAULT': timedelta(hours=12), 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'JSONIFY_PRETTYPRINT_REGULAR': False, 'JSONIFY_MIMETYPE': 'application/json', 'TEMPLATES_AUTO_RELOAD': None, 'MAX_COOKIE_SIZE': 4093, })

它其实是字典的子类,所以我们可以以字典的方式操作它

app.config['SWITCH'] = 'on' print(app.config['SWITCH'])

也可以使用update方法一次添加多个配置

app.config.update(SWITCH_A=True,SWITCH_B=False)

最后要注意配置变量的名称必须要大写,小写的变量不会被读取

debug模式

如运行时控制台的输出

Debug mode: off

可知默认debug模式是关闭的,所以当访问路径的程序出现错误的时候页面会显示

Hello Flask

若要开启debug模式,可在run方法添加debug=True参数

app.run('127.0.0.1',8000,debug=True)

此时我们故意使程序出错,即将视图函数多添加一个参数,再次访问url,会出现

Hello Flask


这个页面对于我们调试错误非常有用,同时还允许我们在页面上执行Python代码,我们只需要点击错误最右边的命令行图标
这时会弹出一个窗口让我们输入PIN码,这个可以在程序刚允许时控制台输出找到

Hello Flask


输入后就可在页面执行代码了

Hello Flask

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzfjg.html