UnicodeDecodeError, кодек 'utf-8' не может декодировать байт 0x80, несмотря на использование игнорирования в качестве обработчика ошибок при декодировании
Я запускаю redis_instance
, который я только что промыл. Когда я запускаю keys *
, чтобы проверить, какие значения ключей у меня есть, я получаю такой вывод
1) "pairprogramming:1:views.decorators.cache.cache_page..GET.3ab7bc76b513f7063fc20ab3fdb2d22b.d41d8cd98f00b204e9800998ecf8427e.en-us.UTC"
2) "pairprogramming:1:views.decorators.cache.cache_header..3ab7bc76b513f7063fc20ab3fdb2d22b.en-us.UTC"
3) "pairprogramming:1:views.decorators.cache.cache_page..GET.146382e9a37a1da80e630eb042e9e924.83bf0aec533965b875782854d37402b7.en-us.UTC"
4) "pairprogramming:1:views.decorators.cache.cache_header..146382e9a37a1da80e630eb042e9e924.en-us.UTC"
5) "pairprogramming:1:views.decorators.cache.cache_page..GET.21d502855d4ad5b0f631c20fc5e899c6.65330eb47d0175f264fdb29633829c0b.en-us.UTC"
6) "pairprogramming:1:views.decorators.cache.cache_header..21d502855d4ad5b0f631c20fc5e899c6.en-us.UTC"
Полагаю, что каждый раз, когда я пытаюсь сделать запрос GET
, эта попытка записывается в мой redis_instance
?
Это не суть важно, проблема в том, что когда я пытаюсь выполнить запрос GET
, я ожидаю получить следующее:
{"count":0,"msg":"Found 0 items.","items":{}}
Однако, я получаю эту ошибку:
UnicodeDecodeError at /cache/
'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
Это нарушающая строка/символы
The string that could not be encoded/decoded was: ���
Я пытался изменить стандартный обработчик ошибок на: ignore, replace, backslash, но продолжаю получать ту же ошибку.
Вот как выглядит мой код в настоящее время:
@api_view(['GET', 'POST'])
def manage_items(request, *args, **kwargs):
if request.method == 'GET':
items = {}
count = 0
for key in redis_instance.keys("*"):
items[key.decode("utf-8", errors='ignore')] = redis_instance.get(key)
count += 1
response = {
'count': count,
'msg': f"Found {count} items.",
'items': items
}
return Response(response, status=200)
elif request.method == 'POST':
item = json.loads(request.body)
keys = list(item.keys())
values = list(item.values())
for i in range(0, len(keys)):
redis_instance.set(keys[i], values[i])
response = {
'msg': f"{keys} successfully set to {values}"
}
return Response(response, 201)
Я использую django-redis
В некоторых случаях я получаю ожидаемый результат при тестировании api_end point с помощью Postman, но продолжаю получать ту же ошибку при попытке GET
данных с помощью axios в моем frontend