Como redirecionar a uma URL string de consulta que contém caracteres não-ascii no Django?

StackOverflow https://stackoverflow.com/questions/2204914

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 ...

Foi útil?

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))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top