sql >> Databasteknik >  >> RDS >> Mysql

UnicodeWarning:Unicode-likvärdig jämförelse kunde inte konvertera båda argumenten till Unicode

Du skickar värdet som returneras av FileField image direkt in i svaret som om det vore en sträng eller iterabel. Kontrollerar källkoden för den angivna undantagssökvägen ser vi att objektet som returneras av fältet har den felande raden i sin __iter__ metod - wrapperklassen letar efter linjeavslutare. Det är förvisso troligt att den råa bildfilen kan innehålla byte som inte kan konverteras till något som kan jämföras med linjeavslutningstecken.

HttpResponse behöver bara något den kan behandla som en sträng - om du ger den en iterator läser den in allt på en gång och skapar en sträng, så det finns inga minnesbesparingar tillgängliga:

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

Så du behöver något som drar innehållet i ditt bildfilsomslagsobjekt utan att gå igenom iterationsgränssnittet. läs metoden gör det, drar in hela filens innehåll om du inte ger den ett antal byte-argument. Därför är det första jag skulle försöka:

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

Det här är oprövat, så jag kanske har förbisett något.

Du kan också försöka profilera det enklare fallet att låta din värdwebbserver hantera bilderna och bara skicka en omdirigering till URL returneras från FileField . Det skulle innebära en extra HTTP-tur och retur för att tala om för webbläsaren var den ska leta, så jag tror inte att det finns en universell regel för vilket tillvägagångssätt som är snabbare.




  1. Hur krypterar jag lösenord med PostgreSQL?

  2. Skapar DATETIME från DATE och TIME

  3. komma efter latitud och longitud i laravel 5 med andra sammanfogningar

  4. Vad är det bästa sättet att undvika användarinmatning för reguljära uttryck i MySQL?