sql >> Databáze >  >> RDS >> Mysql

UnicodeWarning:Porovnání rovnosti Unicode se nezdařilo převést oba argumenty na Unicode

Předáváte hodnotu vrácenou FileField image přímo do odpovědi, jako by to byl řetězec nebo iterovatelný. Kontrola zdrojový kód pro zadanou cestu výjimky vidíme, že objekt vrácený polem má ve svém __iter__ problematický řádek metoda - třída wrapper hledá zakončení řádků. Je jistě pravděpodobné, že soubor raw image by mohl obsahovat bajty, které nelze převést na něco, co lze porovnat se znaky zakončení řádku.

HttpResponse potřebuje jen něco, co může považovat za řetězec - pokud tomu dáte iterátor, načte to všechno najednou a vytvoří řetězec, takže nejsou k dispozici žádné úspory paměti:

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

Takže potřebujete něco, co vytáhne obsah vašeho objektu obalu obrazu, aniž byste museli procházet iteračním rozhraním. přečíst Metoda to dělá a stahuje celý obsah souboru, pokud mu nezadáte argument počtu bajtů. Takže první věc, kterou bych zkusil, je:

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

Toto není testováno, takže jsem mohl něco přehlédnout.

Můžete se také pokusit vytvořit profil jednoduššího případu, kdy necháte svůj hostingový webový server zpracovávat obrázky a pouze obsloužíte přesměrování na URL vráceno z FileField . To by vyžadovalo další okružní cestu HTTP, která by prohlížeči sdělila, kam se má podívat, takže si nemyslím, že existuje univerzální pravidlo pro to, který přístup bude rychlejší.




  1. Jak snížit počet připojení pomocí SQLAlchemy + postgreSQL?

  2. SQLAlchemy WHERE IN jedna hodnota (raw SQL)

  3. Je možné odpovídat na dotazy ohledně pohledu před úplným zhmotněním pohledu?

  4. mysql připojit ON a AND k laravel výmluvný