Skip to main content
 首页 » 编程设计

python之Django 服务器返回不同的状态代码

2025年05月04日36lovecherry

我正在使用 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 

请您参考如下方法:

看起来您正在使用的 Response 类需要一个数据参数:

Signature: Response(data, status=None, template_name=None, headers=None, content_type=None)

http://www.django-rest-framework.org/api-guide/responses

我只是在那里使用基本的 HttpResponse。