V Django mám flash správu, ktorá je vytvorená pomocou štandardného poľa char z modelu členstva.
messages.add_message(request,
messages.INFO,
"{0} membership created".format(membership.name))
Funguje to dobre, iba ak memberships.name
obsahuje znaky unicode, v takom prípade dostanem a UnicodeEncodeError
, Môžem to napraviť tým, že napíšem reťazec u
vytvoriť reťazec unicode, ale nechápem, prečo je to potrebné ako docs že Django predpokladá, že všetky bytestrings sú v utf-8. Mám prechádzať svojou aplikáciou a meniť všetky reťazce na reťazce unicode?
odpovede:
1 pre odpoveď č. 1Toto nie je „skutočný problém s Djangom. Vyzerá to, že ste v chybe v ceste str.format
spracováva argumenty unicode, Python vydanie 7300
Jedným riešením je použitie reťazca unicode, ďalšie je použitie %
formátovanie.
"%s membership created" % membership.name
u"{0} membership created".format(membership.name))
0 pre odpoveď č. 2
Áno. Okrem tých, ktoré sú vlastne reťazcami bajtov, pretože boli prečítané zo súboru alebo podobne.