Django服务器返回不同的状态码
我正在使用Django的REST框架来实现一个简单的API。在我的view.py文件里,我有这样一个方法:
def business_profile_detail(request, pk):
"""
Retrieve, update or delete a profile.
"""
try:
profile = BusinessProfile.objects.get(pk=pk)
except BusinessProfile.DoesNotExist:
return HttpResponse(status=404)
if request.method == 'GET':
serializer = BusinessProfileSerializer(profile)
return JSONResponse(serializer.data)
elif request.method == 'PUT':
"""
Method not supported yet
"""
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
elif request.method == 'DELETE':
"""
Method not supported yet
"""
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
所以对于PUT和DELETE这两种方法,我想返回一个错误代码405,但在使用Django测试服务器时,我总是收到一个错误代码500:
[17/Oct/2014 18:20:22] "DELETE /business/api/profile/2 HTTP/1.1" 500 60487
有人知道这是为什么吗?
谢谢!
编辑:
Traceback:
File "/Users/*******/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/Django-1.7-py2.7.egg/django/core/handlers/base.py" in get_response
137. response = response.render()
File "/Users/*******/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/Django-1.7-py2.7.egg/django/template/response.py" in render
103. self.content = self.rendered_content
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/rest_framework/response.py" in rendered_content
49. assert renderer, ".accepted_renderer not set on Response"
Exception Type: AssertionError at /business/api/profile/2
Exception Value: .accepted_renderer not set on Response
1 个回答
1
看起来你用的这个 Response
类需要一个数据参数:
它的格式是:
Response(data, status=None, template_name=None, headers=None, content_type=None)
你可以查看这个链接了解更多信息:http://www.django-rest-framework.org/api-guide/responses
我建议你直接使用一个基本的 HttpResponse
。