瀏覽代碼

Fixed #15683 -- Prevented escaped string to be needlessly marked safe twice in force_escape filter. Thanks tyrion for the initial patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17876 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Claude Paroz 13 年之前
父節點
當前提交
8dd04fd84b
共有 2 個文件被更改,包括 5 次插入3 次删除
  1. 1 1
      django/template/defaultfilters.py
  2. 4 2
      tests/regressiontests/defaultfilters/tests.py

+ 1 - 1
django/template/defaultfilters.py

@@ -419,7 +419,7 @@ def force_escape(value):
     characters (as opposed to "escape", which marks the content for later
     possible escaping).
     """
-    return mark_safe(escape(value))
+    return escape(value)
 
 @register.filter("linebreaks", is_safe=True, needs_autoescape=True)
 @stringfilter

+ 4 - 2
tests/regressiontests/defaultfilters/tests.py

@@ -6,6 +6,7 @@ import decimal
 from django.template.defaultfilters import *
 from django.test import TestCase
 from django.utils import unittest, translation
+from django.utils.safestring import SafeData
 
 
 class DefaultFiltersTests(TestCase):
@@ -328,9 +329,10 @@ class DefaultFiltersTests(TestCase):
                           u'a string to be mangled')
 
     def test_force_escape(self):
+        escaped = force_escape(u'<some html & special characters > here')
         self.assertEqual(
-            force_escape(u'<some html & special characters > here'),
-            u'&lt;some html &amp; special characters &gt; here')
+            escaped, u'&lt;some html &amp; special characters &gt; here')
+        self.assertTrue(isinstance(escaped, SafeData))
         self.assertEqual(
             force_escape(u'<some html & special characters > here ĐÅ€£'),
             u'&lt;some html &amp; special characters &gt; here'\