[1.7.x] Ensured bound field renders as unicode safe data
Refs #22950.
Backport of 920904921
from master.
This commit is contained in:
parent
b68c7a5abb
commit
83a185a3f7
|
@ -557,7 +557,7 @@ class BoundField(object):
|
||||||
name = self.html_name
|
name = self.html_name
|
||||||
else:
|
else:
|
||||||
name = self.html_initial_name
|
name = self.html_initial_name
|
||||||
return widget.render(name, self.value(), attrs=attrs)
|
return force_text(widget.render(name, self.value(), attrs=attrs))
|
||||||
|
|
||||||
def as_text(self, attrs=None, **kwargs):
|
def as_text(self, attrs=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -22,7 +22,9 @@ from django.template import Template, Context
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.test.utils import str_prefix
|
from django.test.utils import str_prefix
|
||||||
from django.utils.datastructures import MultiValueDict, MergeDict
|
from django.utils.datastructures import MultiValueDict, MergeDict
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.encoding import force_text
|
||||||
|
from django.utils.html import format_html
|
||||||
|
from django.utils.safestring import mark_safe, SafeData
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
|
|
||||||
|
|
||||||
|
@ -1335,6 +1337,21 @@ class FormsTestCase(TestCase):
|
||||||
self.assertEqual(bound['password'].value(), 'foo')
|
self.assertEqual(bound['password'].value(), 'foo')
|
||||||
self.assertEqual(unbound['password'].value(), None)
|
self.assertEqual(unbound['password'].value(), None)
|
||||||
|
|
||||||
|
def test_boundfield_rendering(self):
|
||||||
|
"""
|
||||||
|
Python 2 issue: Test that rendering a BoundField with bytestring content
|
||||||
|
doesn't lose it's safe string status (#22950).
|
||||||
|
"""
|
||||||
|
class CustomWidget(TextInput):
|
||||||
|
def render(self, name, value, attrs=None):
|
||||||
|
return format_html(str('<input{0} />'), ' id=custom')
|
||||||
|
|
||||||
|
class SampleForm(Form):
|
||||||
|
name = CharField(widget=CustomWidget)
|
||||||
|
|
||||||
|
f = SampleForm(data={'name': 'bar'})
|
||||||
|
self.assertIsInstance(force_text(f['name']), SafeData)
|
||||||
|
|
||||||
def test_initial_datetime_values(self):
|
def test_initial_datetime_values(self):
|
||||||
now = datetime.datetime.now()
|
now = datetime.datetime.now()
|
||||||
# Nix microseconds (since they should be ignored). #22502
|
# Nix microseconds (since they should be ignored). #22502
|
||||||
|
|
Loading…
Reference in New Issue