diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py index dac4e5ddb41..85202b62a4b 100644 --- a/django/template/defaultfilters.py +++ b/django/template/defaultfilters.py @@ -49,15 +49,6 @@ def stringfilter(func): # when multiple decorators are applied). _dec._decorated_function = getattr(func, '_decorated_function', func) - for attr in ('is_safe', 'needs_autoescape'): - if hasattr(func, attr): - import warnings - warnings.warn("Setting the %s attribute of a template filter " - "function is deprecated; use @register.filter(%s=%s) " - "instead" % (attr, attr, getattr(func, attr)), - DeprecationWarning) - setattr(_dec, attr, getattr(func, attr)) - return wraps(func)(_dec) diff --git a/docs/howto/custom-template-tags.txt b/docs/howto/custom-template-tags.txt index 70b6288beed..d57730c4fb4 100644 --- a/docs/howto/custom-template-tags.txt +++ b/docs/howto/custom-template-tags.txt @@ -328,26 +328,6 @@ Template filter code falls into one of two situations: handle the auto-escaping issues and return a safe string, the ``is_safe`` flag won't change anything either way. -.. versionchanged:: 1.4 - -``is_safe`` and ``needs_autoescape`` used to be attributes of the filter -function; this syntax is deprecated. - -.. code-block:: python - - @register.filter - def myfilter(value): - return value - myfilter.is_safe = True - -.. code-block:: python - - @register.filter - def initial_letter_filter(text, autoescape=None): - # ... - return mark_safe(result) - initial_letter_filter.needs_autoescape = True - .. _filters-timezones: Filters and time zones