• Aymeric Augustin's avatar
    Fixed #23831 -- Supported strings escaped by third-party libs in Django. · 6d52f6f8
    Aymeric Augustin yazdı
    Refs #7261 -- Made strings escaped by Django usable in third-party libs.
    
    The changes in mark_safe and mark_for_escaping are straightforward. The
    more tricky part is to handle correctly objects that implement __html__.
    
    Historically escape() has escaped SafeData. Even if that doesn't seem a
    good behavior, changing it would create security concerns. Therefore
    support for __html__() was only added to conditional_escape() where this
    concern doesn't exist.
    
    Then using conditional_escape() instead of escape() in the Django
    template engine makes it understand data escaped by other libraries.
    
    Template filter |escape accounts for __html__() when it's available.
    |force_escape forces the use of Django's HTML escaping implementation.
    
    Here's why the change in render_value_in_context() is safe. Before Django
    1.7 conditional_escape() was implemented as follows:
    
        if isinstance(text, SafeData):
            return text
        else:
            return escape(text)
    
    render_value_in_context() never called escape() on SafeData. Therefore
    replacing escape() with conditional_escape() doesn't change the
    autoescaping logic as it was originally intended.
    
    This change should be backported to Django 1.7 because it corrects a
    feature added in Django 1.7.
    
    Thanks mitsuhiko for the report.
    6d52f6f8
Adı
Son kayıt (commit)
Son güncelleme
..
archives Loading commit data...
eggs Loading commit data...
files Loading commit data...
locale/nl/LC_MESSAGES Loading commit data...
test_module Loading commit data...
__init__.py Loading commit data...
models.py Loading commit data...
test_archive.py Loading commit data...
test_autoreload.py Loading commit data...
test_baseconv.py Loading commit data...
test_checksums.py Loading commit data...
test_crypto.py Loading commit data...
test_datastructures.py Loading commit data...
test_dateformat.py Loading commit data...
test_dateparse.py Loading commit data...
test_datetime_safe.py Loading commit data...
test_decorators.py Loading commit data...
test_duration.py Loading commit data...
test_encoding.py Loading commit data...
test_feedgenerator.py Loading commit data...
test_functional.py Loading commit data...
test_html.py Loading commit data...
test_http.py Loading commit data...
test_ipv6.py Loading commit data...
test_itercompat.py Loading commit data...
test_jslex.py Loading commit data...
test_lazyobject.py Loading commit data...
test_lorem_ipsum.py Loading commit data...
test_module_loading.py Loading commit data...
test_no_submodule.py Loading commit data...
test_numberformat.py Loading commit data...
test_os_utils.py Loading commit data...
test_regex_helper.py Loading commit data...
test_safestring.py Loading commit data...
test_simplelazyobject.py Loading commit data...
test_termcolors.py Loading commit data...
test_text.py Loading commit data...
test_timesince.py Loading commit data...
test_timezone.py Loading commit data...
test_tree.py Loading commit data...
test_tzinfo.py Loading commit data...