HttpException中get_body()调用的问题
来源:7-4 深入理解dict的机制
大野和我3326249
2018-12-25
老师, 您好,我自定义了一个继承与HTTPException的异常类, 实现为如下代码, 为了使对象可以转换为dict,增加了相关方法
这样做的目的是为了在服务器返回的JSON中加入自定义的信息
from werkzeug.exceptions import HTTPException
from flask import request
class APIException(HTTPException):
code = 500
msg = '对不起,发生了内部错误!'
error_code = 999
def __init__(self, code=None, error_code=None, msg=None):
if code:
self.code = code
if error_code:
self.error_code = error_code
if msg:
self.msg = msg
self.key_items = ['error_code', 'msg', 'request']
self.request = request.method + ' ' + self.get_url_no_param()
super(APIException, self).__init__(msg, None)
def get_body(self, environ=None):
print(id(self))
body = dict(self)
import json
text = json.dumps(body)
return text
def keys(self):
return self.key_items
def hide(self, *items):
for item in items:
if item not in self.keys():
continue
self.key_items.remove(item)
return self
def append(self, **kwargs):
for key, value in kwargs.items():
self.key_items.append(key)
setattr(self, key, value)
print(id(self))
return self
def __getitem__(self, item):
return getattr(self, item, '')
@staticmethod
def get_url_no_param():
full_path = request.full_path
main_path = full_path.split('?')
return main_path[0]
def get_headers(self, environ=None):
return [('Content-Type', 'application/json')]
在视图函数中的调用如下
def __register_user_email():
email_form = EmailForm()
email_form.validate_for_api()
user_id = User.create(email_form.nickname.data,
email_form.account.data,
email_form.password.data)
result = Success().append(user_id=user_id)
return result
前端返回的结果为:
4541714696
4541714696
两个对象的id相等,但并未返回期望的结果
{
"error_code": "0",
"msg": "成功",
"request": "POST /v1/client"
}
并没有显示我添加的user_id
经调试,append()方法是先于get_body()调用的
但是append()里的self.key_items与 get_body()里的self.key_items不一致

请问为什么会出现这样的情况呢? 该如何解决?
写回答
1回答
-
大野和我3326249
提问者
2018-12-25
忽略此问题,问题发生在我调用上,此贴结束
00
相似问题