首页 > 解决方案 > ubuntu 服务器上的 Django 编码问题

问题描述

我正在开发 Django Rest Framework,我有一个简单的登录 view.py,并且在我的本地主机上一切正常。但是在 ubuntu 服务器上它会抛出一些奇怪的错误。

以下是视图类

class userDetail(generics.RetrieveUpdateDestroyAPIView):
def post(self, request, *args, **kwargs):
    header = Header(request)
    checkHeader = header.checkHeader()

    if checkHeader['status'] == 0:
        return Response(checkHeader, status=status.HTTP_401_UNAUTHORIZED)
    # platform = request.META.get('HTTP_PLATFORM', 'Not Found')
    data = request.data
    serializer = loginSerializer(data = data)        
    if serializer.is_valid(raise_exception=True):
        data = serializer.data
        username = data['username']
        password = data['pword']
        authenticate = Authentication(username, password)
        loginData = authenticate.check()
        if loginData[0]['status'] == 1:
            auth = skAuth_Token(loginData[0]['userID'])
            auth_token = auth.encode()
            if auth.saveToken(auth_token):
                rowData = UserMaster.objects.get(pk=loginData[0]['userID'])
                dataSerializer = loginDataSerializer(rowData)
                response = {
                    'status': 1,
                    'message': 'Login Successfull',
                    'header': checkHeader,
                    'skAuth_Token': auth_token,
                    'data': dataSerializer.data
                }
            else:
                response = {
                    'status': 0,
                    'message': 'Couldnot save skAuth_Token in dB',
                    'header': checkHeader,
                }
        elif loginData[0]['status'] == 2:
            response = {
                'status': 2,
                'message': 'User is not Registered as a seller',
                'header': checkHeader
            }
        else:
            response = {
                'status': 0,
                'message': 'Login Failed',
                'header': checkHeader
            }
        return JsonResponse(response)
    return Response(serializer.error, status=status.HTTP_400_BAD_REQUEST)

这在我的本地主机(Windows)上运行良好。但在 ubuntu 服务器上出现以下错误。

邮递员错误

这是主要错误 - “utf-8”编解码器无法解码位置 0 的字节 0x89:无效的起始字节。请帮我

标签: pythondjangoapiutf-8django-rest-framework

解决方案


这是我在 settings.py 中使用 charset 和 use_unicode 选项解决的 django 编码错误(utf-8)

以下是我的 settings.py 数据库段的外观

DATABASES = {
'default': {
    'ENGINE': 'mysql.connector.django',
    'NAME': 'testDB',
    'USER': 'root',
    'PASSWORD': '123456',
    'HOST': 'localhost',
    'PORT': '3306',
    'OPTIONS': {
            'charset': 'latin1',
            'use_unicode': True, 
            },
    }
}

推荐阅读