Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

UnicodeWarning:A comparação igual de Unicode falhou ao converter ambos os argumentos em Unicode


Você está passando o valor retornado pelo FileField image diretamente na resposta como se fosse uma string ou iterável. Verificando o código-fonte para o caminho de exceção fornecido, vemos que o objeto retornado pelo campo tem a linha incorreta em seu __iter__ método - a classe wrapper está procurando por terminadores de linha. É certamente plausível que o arquivo de imagem bruto possa conter bytes que não podem ser convertidos em algo que possa ser comparado com os caracteres de terminação de linha.

O HttpResponse só precisa de algo que possa tratar como uma string - se você der um iterador, ele lê tudo de uma vez e cria uma string, para que não haja economia de memória disponível:

https://docs.djangoproject.com/en/ dev/ref/request-response/#passing-iterators

Portanto, você precisa de algo que extraia o conteúdo do seu objeto wrapper de arquivo de imagem sem passar pela interface de iteração. A ler O método faz isso, puxando todo o conteúdo do arquivo se você não fornecer um argumento de número de bytes. Assim, a primeira coisa que eu tentaria é:
return HttpResponse(get_image.read(), mimetype="image/png")

Isso não foi testado, então eu posso ter esquecido alguma coisa.

Você também pode tentar criar o perfil do caso mais simples de deixar seu servidor web de hospedagem manipular as imagens e apenas servir um redirecionamento para o URL retornado do FileField . Isso envolveria uma viagem de ida e volta HTTP adicional para informar ao navegador onde procurar, então não acho que haja uma regra universal para qual abordagem será mais rápida.