Loading django/utils/encoding.py +13 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,19 @@ class StrAndUnicode(object): def __str__(self): return self.__unicode__().encode('utf-8') def python_2_unicode_compatible(klass): """ A decorator that defines __unicode__ and __str__ methods under Python 2. Under Python 3 it does nothing. To support Python 2 and 3 with a single code base, define a __str__ method returning text and apply this decorator to the class. """ if not six.PY3: klass.__unicode__ = klass.__str__ klass.__str__ = lambda self: self.__unicode__().encode('utf-8') return klass def smart_text(s, encoding='utf-8', strings_only=False, errors='strict'): """ Returns a text object representing 's' -- unicode on Python 2 and str on Loading docs/ref/utils.txt +8 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,14 @@ The functions defined in this module share the following properties: Useful as a mix-in. If you support Python 2 and 3 with a single code base, you can inherit this mix-in and just define ``__unicode__``. .. function:: python_2_unicode_compatible A decorator that defines ``__unicode__`` and ``__str__`` methods under Python 2. Under Python 3 it does nothing. To support Python 2 and 3 with a single code base, define a ``__str__`` method returning text and apply this decorator to the class. .. function:: smart_text(s, encoding='utf-8', strings_only=False, errors='strict') .. versionadded:: 1.5 Loading Loading
django/utils/encoding.py +13 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,19 @@ class StrAndUnicode(object): def __str__(self): return self.__unicode__().encode('utf-8') def python_2_unicode_compatible(klass): """ A decorator that defines __unicode__ and __str__ methods under Python 2. Under Python 3 it does nothing. To support Python 2 and 3 with a single code base, define a __str__ method returning text and apply this decorator to the class. """ if not six.PY3: klass.__unicode__ = klass.__str__ klass.__str__ = lambda self: self.__unicode__().encode('utf-8') return klass def smart_text(s, encoding='utf-8', strings_only=False, errors='strict'): """ Returns a text object representing 's' -- unicode on Python 2 and str on Loading
docs/ref/utils.txt +8 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,14 @@ The functions defined in this module share the following properties: Useful as a mix-in. If you support Python 2 and 3 with a single code base, you can inherit this mix-in and just define ``__unicode__``. .. function:: python_2_unicode_compatible A decorator that defines ``__unicode__`` and ``__str__`` methods under Python 2. Under Python 3 it does nothing. To support Python 2 and 3 with a single code base, define a ``__str__`` method returning text and apply this decorator to the class. .. function:: smart_text(s, encoding='utf-8', strings_only=False, errors='strict') .. versionadded:: 1.5 Loading