Como redirecionar a uma URL string de consulta que contém caracteres não-ascii no Django?
-
18-09-2019 - |
Pergunta
Como redirecionar para uma URL string de consulta que contém caracteres não-ascii no Django?
Quando eu uso return HttpResponseRedirect(u'/page/?title=' + query_string)
onde o query_string
contém caracteres como 你好
, eu recebo um erro
'ascii' codec não pode personagens codificar na posição 21-26: não ordinal in range (128), HTTP cabeçalhos de resposta deve estar no formato US-ASCII ...
Solução
HttpResponseRedirect(((u'/page/?title=' + query_string).encode('utf-8'))
é a primeira coisa a tentar (desde UTF8 é a codificação apenas popular que pode lidar com todos os caracteres Unicode). Isso deve definitivamente se livrar de exceção você está observando - o problema, então move-se para assegurar a rotina de tratamento para /page
pode lidar adequadamente com UTF-8 procedimentos codificados (presumivelmente pela decodificação-los de volta para Unicode). No entanto, essa parte não é, estritamente falando, pertinente a esta pergunta específica que você está perguntando!
Outras dicas
django maneira:
from django.http import HttpResponseRedirect
from django.utils.http import urlquote
return HttpResponseRedirect(u'/page/?title=%s' % urlquote(query_string))