我创建了一个引用http://django-rest-framework.org/api-guide/exceptions.html的自定义异常.
请知道我有自己的身份验证后端.因此我没有使用rest_framework的身份验证模块.
对于身份验证错误,我想将"WWW-Authenticate:Token"标头添加到从异常发送的响应中.
任何想法都会非常有帮助.
更新:
谢谢@Pathétique,这就是我最终要做的事情.
- 有一个名为BaseView的基础视图类.
- 在我的案例'WWW-Authenticate'中覆盖handle_exception方法来设置适当的标题.
这是代码:
class BaseView(APIView):
def handle_exception(self, exc):
if isinstance(exc, MYEXCEPTION):
self.headers['WWW-Authenticate'] = "Token"
return Response({'detail': exc.detail,
status=exc.status_code, exception=True)
Run Code Online (Sandbox Code Playgroud)
你的意见?
ValidationException:ValidationException:400 Bad Request {u'message':u'Item size已超过允许的最大大小','__ type':u'com.amazon.coral.validate#ValidationException'}
我拥有的项目对象,大小为92004字节
>>> iii
<boto.dynamodb2.items.Item object at 0x7f7922c97190>
>>> iiip = iii.prepare_full() # it is now in dynamodb format e.g. "Item":{"time":{"N":"300"}, "user":{"S":"self"}}
>>> len(json.dumps(iiip))
92004
>>>
Run Code Online (Sandbox Code Playgroud)
我得到的尺寸92004小于400KB,为什么在保存项目时会看到上述错误?
有什么指针吗?
我玩了不同大小的数据,
>>> i00['Resources'] = "A" * 66848; len(json.dumps(i00))
68481
>>> i = Item(ct.table, data=i00); i.save()
True
>>> i.delete()
True
>>> i00['Resources'] = "A" * 66849; len(json.dumps(i00))
68482
>>> i = Item(ct.table, data=i00); i.save()
Traceback (most recent call last):
File "<console>", line 1, in <module> …Run Code Online (Sandbox Code Playgroud)