在使用logbook的时候,遇到一个问题,那就是日志的时间不对,原来是logbook默认采用的是世界标准世界utc,而我们的北京世界是比世界标准时间早8小时的。
如何解决?
import logbook
from app import hapi
class Log(object):
handler = None
def __init__(self, name='hapi', filename=hapi.config['LOG_NAME']): # Logger标识为默认app
'''
:param name: 业务名称
:param filename: 文件名称
'''
self.handler = logbook.FileHandler(filename, encoding='utf-8')
logbook.set_datetime_format("local") # 将日志时间设置为本地时间
self.logger = logbook.Logger(name)
self.handler.push_application()
def info(self, *args, **kwargs):
return self.logger.info(*args, **kwargs)
def error(self, *args, **kwargs):
return self.logger.error(*args, **kwargs)
def warning(self, *args, **kwargs):
return self.logger.warning(*args, **kwargs)
def debug(self, *args, **kwargs):
return self.logger.debug(*args, **kwargs)
我们调用logbook.set_datetime_format("local"),这样就能把时间设置为本地时间了。接着来测试一下~
接下来讲如何使用蓝图。
蓝图的作用:分离前后端开发的代码,以不同的url前缀来隔离不同的功能,不仅可以使入口文件变得很干净,更重要实现了很好的模块化。
由于我们做前后端分离,所以后端杜绝任何与html有关的东西,比如我如果现在要做用户模块的话。我需要我的url路径统一以/user开始,后面再按照内容划分。
比如用户注册接口,打算这样命名:/user/register
前边user代表模块,后面代表内容,这样特别清晰明了
蓝图设计完了,那我们开始干吧!
首页我们创建controller文件夹,专门处理路由和方法映射,举个例子
这里我创建了auth(认证模块),又创建了user.py文件。
from flask import Blueprint
from flask import jsonify
auth = Blueprint("auth", __name__, url_prefix="/auth")
# 这里以auth.route注册的函数都会自带/auth,所以url是/auth/register
@auth.route("/register")
def register():
return jsonify(dict(status=True, msg="注册成功"))
jsonify函数,函数的作用就是返回一个JSON类型的Response(一般用于把数据返回给前端)
然后我们去app中注册这个蓝图!app/__init__.py代码如下
from flask import Flask
from app.controller.auth.user import auth
from config import Config
hapi = Flask(__name__)
# 注册蓝图
hapi.register_blueprint(auth)
hapi.config.from_object(Config)
重启run.py服务!进入/auth/register页面,发现msg并不是 注册成功,出现了字符编码的问题。
解决方法:在注册蓝图下面添加一行代码。指定JSON_AS_ASCII的参数设置为False,阻止jsonify将json内容转为ASCII进行返回。
hapi.config["JSON_AS_ASCII"] = False
再试一次:
完美解决~