Проблема с кодировкой Django на сервере Ubuntu - PullRequest
0 голосов
/ 10 января 2019

Я работаю над 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.

Postman error

Это основная ошибка - кодек utf-8 не может декодировать байт 0x89 в позиции 0: недопустимый начальный байт. Пожалуйста, помогите мне

1 Ответ

0 голосов
/ 27 апреля 2019

Это была ошибка кодирования django (utf-8), которую я решил, используя опцию charset и use_unicode в settings.py

Вот как выглядит мой сегмент базы данных settings.py

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