2012-09-14 35 views
2

这工作:不能让错误响应对Django的REST框架工作

class Right(ResponseMixin, View): 
    """Right""" 
    renderers = (JSONRenderer, XMLRenderer) 

    def get(self, request, right_id): 
     if not right_id: 
      return self.render(
       Response(status.HTTP_400_BAD_REQUEST, 
         {"successful": False}) 
      ) 

这不:

class Right(ResponseMixin, View): 
    """Right""" 
    renderers = (JSONRenderer, XMLRenderer) 

    # @default_json 
    def get(self, request, right_id): 
     if not right_id: 
      raise ErrorResponse(status.HTTP_400_BAD_REQUEST, 
           {"successful": False}) 

我得到它说的错误消息:

错误响应在/ v1/right/ 没有异常提供

或者:

Environment: 
Request Method: GET 
Request URL: http://127.0.0.1:8000/v1/right/ 

Django Version: 1.4.1 
Python Version: 2.7.2 
Installed Applications: 
('django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles') 
Installed Middleware: 
('api.disable.DisableCSRF', 
'django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "/Users/agoodattitude/Envs/locker-proxy/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/Users/agoodattitude/Envs/locker-proxy/lib/python2.7/site-packages/django/views/generic/base.py" in view 
    48.    return self.dispatch(request, *args, **kwargs) 
File "/Users/agoodattitude/Envs/locker-proxy/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch 
    69.   return handler(request, *args, **kwargs) 
File "/Users/agoodattitude/saff-py/locker-proxy/locker_proxy/api/resources.py" in get 
    125.               error_message="right_id was not passed.")) 

Exception Type: ErrorResponse at /v1/right/ 
Exception Value: 

有没有人知道“没有例外提供”是什么意思?

(注意,我改变了代码非常轻微地降低复杂性,但问题持有......)

+0

是ErrorResponse一个异常类型?你尝试过使用'return ErrorResponse()',而不是'raise'吗? –

+0

这是一个例外: https://github.com/tomchristie/django-rest-framework/blob/master/djangorestframework/response.py – olive

回答

0

使用http://django-rest-framework.org/api-guide/exceptions.html,我想创建一个自定义异常,会从APIException继承和提高的那一个。这至少对我有用!

我知道我正在指向新的2.x版本的文档,并且您指的是0.4.x版本,但它允许其他观众跟随主题和文档,并且APIException类也具有自上一版本以来只有很小的变化。