sql >> Database >  >> RDS >> Mysql

UnicodeWarning:Unicode gelijke vergelijking kon beide argumenten niet converteren naar Unicode

U geeft de waarde door die wordt geretourneerd door het FileField image direct in het antwoord alsof het een string of iterable is. De broncode controleren voor het gegeven uitzonderingspad zien we dat het object dat door het veld wordt geretourneerd de beledigende regel in zijn __iter__ heeft methode - de wrapper-klasse is op zoek naar lijnterminators. Het is zeker aannemelijk dat het onbewerkte afbeeldingsbestand bytes kan bevatten die niet kunnen worden geconverteerd naar iets dat kan worden vergeleken met de tekens van de regel terminator.

De HttpResponse heeft gewoon iets nodig dat het als een tekenreeks kan behandelen - als je het een iterator geeft, leest het alles in één keer in en maakt het een tekenreeks, dus er is geen geheugenbesparing beschikbaar:

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

U hebt dus iets nodig dat de inhoud van uw wrapper-object voor afbeeldingsbestanden ophaalt zonder door de iteratie-interface te gaan. De lezen methode doet dat en haalt de volledige inhoud van het bestand binnen als je het geen argument geeft met een aantal bytes. Dus het eerste wat ik zou proberen is:

return HttpResponse(get_image.read(), mimetype="image/png")

Dit is niet getest, dus misschien heb ik iets over het hoofd gezien.

Je zou ook kunnen proberen om het eenvoudigere geval te profileren door je hosting-webserver de afbeeldingen te laten afhandelen en alleen een omleiding te geven naar de URL geretourneerd uit het FileField . Dat zou een extra HTTP-retour inhouden om de browser te vertellen waar hij moet zoeken, dus ik denk niet dat er een universele regel is voor welke aanpak sneller zal zijn.




  1. Hoe een taal te identificeren in de utf-8-kolom in MySQL

  2. Hoe kan ik [ERROR] InnoDB:besturingssysteemfoutnummer 87 oplossen in een bestandsbewerking op mysql?

  3. Gegevens invoegen in tabellen die zijn gekoppeld door een externe sleutel

  4. Hoe de huidige instelling voor null-uitvoer in PostgreSQL (psql) te tonen