Saut à tous,
je suis confronté à une erreur dès que je fait une requête POST qui contient des accents.
Voici l'erreur :
1 | 'latin-1' codec can't encode character '\ufffd' in position 2: ordinal not in range(256) |
Je ne comprend pas, j'utilise pourtant Python 3, qui, il me semble, utilise l'utf-8 par défaut. Pourquoi il me parle de 'latin-1' ?
Voici ma vue qui génère l'erreur :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def api_teacher_change(request): if request.is_ajax() and request.method == 'POST': encoding = request.encoding data = json.loads(request.read().decode(encoding)) # data = json.loads(request.body.decode('latin-1'), encoding="utf-8") teacher = Teacher.objects.filter(id=data['id']) if (len(teacher) > 0): print(data['last_name']) teacher.update(username=data['username'], first_name=data['first_name'], last_name=data['last_name'], password=data['password']) return HttpResponse("Ok") else: return HttpResponse("None") return HttpResponse("Forbidden") |
et voici ma requête en Ajax (jquery) :
1 2 3 4 5 6 7 | $.ajax({ url : 'api/teacher/change', type : 'POST', data : JSON.stringify({'id': id,'username': username, 'first_name': first_name, 'last_name': last_name, 'password':password}), contentType: "application/json; charset=utf-8", dataType: "json" }); |
Pourquoi j'ai cette erreur ? et comment la résoudre ?
Je vous remercie par avance
+0
-0