Come reindirizzare a un URL query string che contiene caratteri non-ASCII in DJANGO?
-
18-09-2019 - |
Domanda
Come reindirizzare a un URL query string che contiene caratteri non-ASCII in DJANGO?
Quando uso return HttpResponseRedirect(u'/page/?title=' + query_string)
dove il query_string
contiene caratteri come 你好
, ottengo un errore
codec 'ascii' non può codificare i caratteri in posizione 21-26: non ordinali nella gamma (128), intestazioni di risposta HTTP devono essere in formato US-ASCII ...
Soluzione
HttpResponseRedirect(((u'/page/?title=' + query_string).encode('utf-8'))
è la prima cosa da provare (dal momento che è l'unico UTF8 codifica popolare in grado di gestire tutti i caratteri Unicode). Che deve assolutamente sbarazzarsi di eccezione si sta osservando - la questione si sposta quindi a garantire il gestore per /page
in grado di affrontare correttamente con UTF-8 queries codificati (presumibilmente decodificando nuovamente dentro Unicode). Tuttavia, quella parte non è, a rigor di termini, germano a questa specifica domanda che stai chiedendo!
Altri suggerimenti
modo django:
from django.http import HttpResponseRedirect
from django.utils.http import urlquote
return HttpResponseRedirect(u'/page/?title=%s' % urlquote(query_string))