我们从Python开源项目中,提取了以下31个代码示例,用于说明如何使用django.utils.safestring.SafeText()。
def adapt_datetime_warn_on_aware_datetime(value, conv): # Remove this function and rely on the default adapter in Django 2.0. if settings.USE_TZ and timezone.is_aware(value): warnings.warn( "The MySQL database adapter received an aware datetime (%s), " "probably from cursor.execute(). Update your code to pass a " "naive datetime in the database connection's time zone (UTC by " "default).", RemovedInDjango20Warning) # This doesn't account for the database connection's timezone, # which isn't known. (That's why this adapter is deprecated.) value = value.astimezone(timezone.utc).replace(tzinfo=None) return Thing2Literal(value.strftime("%Y-%m-%d %H:%M:%S.%f"), conv) # MySQLdb-1.2.1 returns TIME columns as timedelta -- they are more like # timedelta in terms of actual behavior as they are signed and include days -- # and Django expects time, so we still need to override that. We also need to # add special handling for SafeText and SafeBytes as MySQLdb's type # checking is too tight to catch those (see Django ticket #6052).
def adapt_datetime_with_timezone_support(value, conv): # Equivalent to DateTimeField.get_db_prep_value. Used only by raw SQL. if settings.USE_TZ: if timezone.is_naive(value): warnings.warn("MySQL received a naive datetime (%s)" " while time zone support is active." % value, RuntimeWarning) default_timezone = timezone.get_default_timezone() value = timezone.make_aware(value, default_timezone) value = value.astimezone(timezone.utc).replace(tzinfo=None) return Thing2Literal(value.strftime("%Y-%m-%d %H:%M:%S.%f"), conv) # MySQLdb-1.2.1 returns TIME columns as timedelta -- they are more like # timedelta in terms of actual behavior as they are signed and include days -- # and Django expects time, so we still need to override that. We also need to # add special handling for SafeText and SafeBytes as MySQLdb's type # checking is too tight to catch those (see Django ticket #6052). # Finally, MySQLdb always returns naive datetime objects. However, when # timezone support is active, Django expects timezone-aware datetime objects.
def send_email(self, rendered_notification, notification): from django.utils.safestring import SafeText assert (isinstance(rendered_notification, SafeText)) try: # TODO: send_mass_mail to send to multiple recipients # mail_managers(u'{}'.format(notification.title), # u'{}'.format(''), # fail_silently=False, html_message=rendered_notification) send_mail('%s%s' % (settings.EMAIL_SUBJECT_PREFIX, notification.title), u'{}'.format(''), from_email=settings.SERVER_EMAIL, recipient_list=[self.email_to, ], fail_silently=False, html_message=rendered_notification) except Exception as e: raise e
def adapt_datetime_warn_on_aware_datetime(value, conv): # Remove this function and rely on the default adapter in Django 2.0. if settings.USE_TZ and timezone.is_aware(value): warnings.warn( "The MySQL database adapter received an aware datetime (%s), " "probably from cursor.execute(). Update your code to pass a " "naive datetime in the database connection's time zone (UTC by " "default).", RemovedInDjango20Warning) # This doesn't account for the database connection's timezone, # which isn't known. (That's why this adapter is deprecated.) value = value.astimezone(timezone.utc).replace(tzinfo=None) return Thing2Literal(value.strftime("%Y-%m-%d %H:%M:%S.%f"), conv) # MySQLdb returns TIME columns as timedelta -- they are more like timedelta in # terms of actual behavior as they are signed and include days -- and Django # expects time, so we still need to override that. We also need to add special # handling for SafeText and SafeBytes as MySQLdb's type checking is too tight # to catch those (see Django ticket #6052).
def get_new_connection(self, conn_params): conn = Database.connect(**conn_params) conn.encoders[SafeText] = conn.encoders[six.text_type] conn.encoders[SafeBytes] = conn.encoders[bytes] return conn
def html_safe(klass): """ A decorator that defines the __html__ method. This helps non-Django templates to detect classes whose __str__ methods return SafeText. """ if '__html__' in klass.__dict__: raise ValueError( "can't apply @html_safe to %s because it defines " "__html__()." % klass.__name__ ) if six.PY2: if '__unicode__' not in klass.__dict__: raise ValueError( "can't apply @html_safe to %s because it doesn't " "define __unicode__()." % klass.__name__ ) klass_unicode = klass.__unicode__ klass.__unicode__ = lambda self: mark_safe(klass_unicode(self)) klass.__html__ = lambda self: unicode(self) # NOQA: unicode undefined on PY3 else: if '__str__' not in klass.__dict__: raise ValueError( "can't apply @html_safe to %s because it doesn't " "define __str__()." % klass.__name__ ) klass_str = klass.__str__ klass.__str__ = lambda self: mark_safe(klass_str(self)) klass.__html__ = lambda self: str(self) return klass
def url_replace(context: RequestContext, field: SafeText, value: SafeText) -> str: dict_ = context['request'].GET.copy() dict_[field] = value return dict_.urlencode()
def test_converts_dict_to_safe_string(self): """Basic dictionary conversion""" result = tojson(self.test_dict) assert result == dumps(self.test_dict) assert isinstance(result, SafeText)
def test_returns_safe_text(self): chunk = self._new_chunk("One helluva yarn.") self.assertIsInstance(chunk.text_as_html(), SafeText)
def test_safe_string(self): """ Test that the output of the render method is marked safe. The output from MarkdownRenderer should be marked safe as it has been sanitized with the bleach library. """ text = 'test' result = self.renderer.render(text) self.assertTrue(type(result) is SafeText)
def html_safe(klass): """ A decorator that defines the __html__ method. This helps non-Django templates to detect classes whose __str__ methods return SafeText. """ if '__html__' in klass.__dict__: raise ValueError( "can't apply @html_safe to %s because it defines " "__html__()." % klass.__name__ ) if six.PY2: if '__unicode__' not in klass.__dict__: raise ValueError( "can't apply @html_safe to %s because it doesn't " "define __unicode__()." % klass.__name__ ) klass_unicode = klass.__unicode__ klass.__unicode__ = lambda self: mark_safe(klass_unicode(self)) klass.__html__ = lambda self: unicode(self) else: if '__str__' not in klass.__dict__: raise ValueError( "can't apply @html_safe to %s because it doesn't " "define __str__()." % klass.__name__ ) klass_str = klass.__str__ klass.__str__ = lambda self: mark_safe(klass_str(self)) klass.__html__ = lambda self: str(self) return klass