Comment rediriger vers une URL de chaîne de requête contenant des caractères non-ascii dans DJANGO?
-
18-09-2019 - |
Question
Comment rediriger vers une URL de chaîne de requête contenant des caractères non-ascii dans DJANGO?
Quand j'utilise return HttpResponseRedirect(u'/page/?title=' + query_string)
où le query_string
contient des caractères comme 你好
, je reçois une erreur
codec 'ascii' ne peut pas encoder des caractères en position 21-26: ordinal dans la plage (128), les en-têtes de réponse HTTP doivent être au format US-ASCII ...
La solution
HttpResponseRedirect(((u'/page/?title=' + query_string).encode('utf-8'))
est la première chose à essayer (puisque UTF8 est le seul encodage populaire qui peut gérer tous les caractères Unicode). Cela devrait certainement se débarrasser de l'exception vous observez - la question se déplace alors à assurer le gestionnaire de /page
peut traiter correctement UTF-8 requêtes codées (probablement par les décoder de nouveau dans Unicode). Toutefois, cette partie n'est pas, à proprement parler, germane à cette question spécifique que vous demandez!
Autres conseils
façon django:
from django.http import HttpResponseRedirect
from django.utils.http import urlquote
return HttpResponseRedirect(u'/page/?title=%s' % urlquote(query_string))