【问题标题】:Parsing DRF request body: TypeError the JSON object must be str, not 'bytes'解析 DRF 请求正文:TypeError JSON 对象必须是 str,而不是 'bytes'
【发布时间】:2018-08-17 16:07:35
【问题描述】:

当我尝试使用 Django REST 框架发送 JSON 时,我收到此错误:

/usermanagement/user/ 处的类型错误
JSON 对象必须是 str,而不是 'bytes'

我的帖子功能:

def post(self,request):
    user=json.loads(request.body)
    m_user= user.get('m_name', None)
    m_email = user.get('m_email', None)
    m_age=user.get('m_age', None)
    m_status = user.get('u_status_id', None)

    user = M_User(m_name=m_name, m_email=m_email, m_age=m_age, u_status_id=m_status)
    user.save()
    if user.save:
        user=M_User.objects.filter(m_user=m_user)
        serializer = M_Userserializer(user,many=True)
        context = {
            'success': "true",
            'user': serializer.data
        }
    elif not user.save:
        context={
        'success':"false"
        }
    else:
        context={
        'success':"false"
        }

    return Response(context)

【问题讨论】:

  • 我不认为该问题与提议的原始问题重复。这个适用于 DRF 而不是原来的。

标签: python django python-3.x django-rest-framework postman


【解决方案1】:

在 DRF 中,您可以使用 request.data 而不是 request.body 来获取已解析的请求:

user=request.data

在这种情况下,请求应该是 Request istance 而不是标准的 django HttpRequest。为确保这一点,您需要使用 api_view 装饰器:

from rest_framework.decorators import api_view

@api_view()
def post(self,request):
    user=request.data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2019-08-04
    • 2017-08-31
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多