diff --git a/django/forms/util.py b/django/forms/util.py
index 3d80ad219f..ea936277b0 100644
--- a/django/forms/util.py
+++ b/django/forms/util.py
@@ -1,4 +1,4 @@
-from django.utils.html import escape
+from django.utils.html import conditional_escape
from django.utils.encoding import smart_unicode, StrAndUnicode, force_unicode
from django.utils.safestring import mark_safe
@@ -9,7 +9,7 @@ def flatatt(attrs):
XML-style pairs. It is assumed that the keys do not need to be XML-escaped.
If the passed dictionary is empty, then return an empty string.
"""
- return u''.join([u' %s="%s"' % (k, escape(v)) for k, v in attrs.items()])
+ return u''.join([u' %s="%s"' % (k, conditional_escape(v)) for k, v in attrs.items()])
class ErrorDict(dict, StrAndUnicode):
"""
diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py
index 65eac8a62c..65706daa37 100644
--- a/django/utils/translation/trans_real.py
+++ b/django/utils/translation/trans_real.py
@@ -403,6 +403,7 @@ def get_date_formats():
date_format = ugettext('DATE_FORMAT')
datetime_format = ugettext('DATETIME_FORMAT')
time_format = ugettext('TIME_FORMAT')
+ datetime_full_format = ugettext('DATE_WITH_TIME_FULL')
if date_format == 'DATE_FORMAT':
date_format = settings.DATE_FORMAT
if datetime_format == 'DATETIME_FORMAT':
diff --git a/tests/regressiontests/forms/widgets.py b/tests/regressiontests/forms/widgets.py
index df0f5d6fd7..cc11d407e8 100644
--- a/tests/regressiontests/forms/widgets.py
+++ b/tests/regressiontests/forms/widgets.py
@@ -50,6 +50,11 @@ u''
>>> w.render('email', '', attrs={'class': 'special'})
u''
+'attrs' can be safe-strings if needed
+>>> w = TextInput(attrs={'onBlur': mark_safe("function('foo')")})
+>>> print w.render('email', '')
+
+
# PasswordInput Widget ############################################################
>>> w = PasswordInput()