8. 补充完善

直接return q 时

会报内置错误,因为在body中指定了json格式。可以更改为slient模式

app\validators\base.py

'''
1.代码太啰嗦了,每个试图函数里,都需要这么写

2.ClientTypeError只是代表客户端类型异常,其他的参数校验不通过也抛出这个异常的话不合适

为了解决上面的问题,我们需要重写wtforms

定义一个自定义BaseForm,让其他的Form来继承
'''
from wtforms import Form
from app.libs.erro_code import ParameterException
from flask import request,jsonify

class BaseForm(Form):
    # def __init__(self, data):
    def __init__(self):
        # data = request.json
        data = request.get_json(silent = True)  #  出现错误,不报异常
        args = request.args.to_dict()  # 完成查询参数的获取
        super(BaseForm, self).__init__(data=data,**args)   # 调用父类构造函数

    def validate_for_api(self):
        valid = super(BaseForm, self).validate()  # 调用父类的构造方法 # 验证是否通过
        if not valid:   # 没通过
            # 所有异常类信息在form errors 中 
            raise ParameterException(msg=self.errors) #  抛出异常  # 公共的自定义异常类
        return self

搜索界面不需要返回全部字段,详情页面则返回全部字段。可以在app\modles\book.py中隐藏

第一次能够隐藏成功,而第二次会受到第一次的影响从而隐藏失败 因为改动的是类变量 改动如下:

并非只有book模型需要隐藏字段,所以可以提取到base基类中,同理,还可以追加append.

app\api\v1\book.py

新建礼gift模型

app\models\gift.py

app\api\v1\gift.py

为token新增一个接口验证是否过期

Last updated

Was this helpful?