parâmetro com acento via url

309 views
Skip to first unread message

Fabrício S. M.

unread,
Dec 22, 2015, 8:29:36 AM12/22/15
to Django Brasil
Estou utilizando os comandos abaixo para chamada da url com o parâmetro cliente_nome:
            response = redirect('cliente_list_os')
            response['Location'] += '?cliente_nome=%s' % obj.cliente.nome
            return response

Já estou utilizando na view: # coding: utf-8
Caso o cliente tenha acentuação no nome aparece o erro abaixo.
Exception Type:UnicodeDecodeError
Exception Value:
'ascii' codec can't decode byte 0xc1 in position 52: ordinal not in range(128)

Sem acentuação funciona normalmente a chamada
Fiz um teste digitando a url no navegador com parâmetro e com acentuação manualmente na linha de comando e funciona sem erros.

Como resolver o problema? Obrigado!

Hugo Tácito

unread,
Dec 22, 2015, 8:46:27 AM12/22/15
to Django Brasil
Se for django 2, coloque um u antes da string. Exemplo:

            response = redirect('cliente_list_os')
            response['Location'] += u'?cliente_nome=%s' % obj.cliente.nome
            return response

Ou então utilize como primeiro import o seguinte:
from __future__ import unicode_literals

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Atenciosamente,
Hugo Tácito
Message has been deleted
Message has been deleted

Fabrício S. M.

unread,
Dec 22, 2015, 11:07:14 AM12/22/15
to Django Brasil
Opa.... mesmo erro!

Rafael dos Santos Gonçalves

unread,
Dec 22, 2015, 11:10:02 AM12/22/15
to django...@googlegroups.com
Fabricio, pq vc ta passando o nome do client via query string? n da pra passar ourtro dado ? tipo id ou coisa do tipo ? caso n coloque um u na frente da string 
que deve funcionar:
response['Location'] += u'?cliente_nome=%s' % obj.cliente.nome
Rafael dos Santos Gonçalves
Ramal - 6757

Marcos Thomaz

unread,
Dec 22, 2015, 11:17:09 AM12/22/15
to django...@googlegroups.com
No topo do código fonte, adicione 
# coding=utf-8

E na sua view, onde está assim:
 response['Location'] += '?cliente_nome=%s' % obj.cliente.nome

deixe assim:

 response['Location'] += u'?cliente_nome=%s' % obj.cliente.nome


Marcos Thomaz da Silva
Analista de Tecnologia da Informação

Alex Chiaranda

unread,
Dec 23, 2015, 1:44:54 PM12/23/15
to Django Brasil
Fabricio,tentou usar o urlencode da urllib ?

Guilherme Carvalho

unread,
Jan 6, 2016, 2:41:38 PM1/6/16
to django...@googlegroups.com
Acho que vc pode resolver isso dando um slugfy antes de enviar o parâmetro para a URL e na views caso vá comparar com algo do banco faz a mesma coisa.

Atenciosamente,

Guilherme de Carvalho Carneiro
Analista de sistemas
twitter: @GCarneiro
http://djangopeople.net/guilhermecarvalho/
Reply all
Reply to author
Forward
0 new messages