Refs #30997 -- Removed HttpRequest.is_ajax() per deprecation timeline.

This commit is contained in:
Mariusz Felisiak 2021-01-11 12:27:40 +01:00
parent 90c59b4e12
commit d08977a0f0
4 changed files with 2 additions and 40 deletions

View File

@ -1,7 +1,6 @@
import cgi
import codecs
import copy
import warnings
from io import BytesIO
from itertools import chain
from urllib.parse import parse_qsl, quote, urlencode, urljoin, urlsplit
@ -16,7 +15,6 @@ from django.http.multipartparser import MultiPartParser, MultiPartParserError
from django.utils.datastructures import (
CaseInsensitiveMapping, ImmutableList, MultiValueDict,
)
from django.utils.deprecation import RemovedInDjango40Warning
from django.utils.encoding import escape_uri_path, iri_to_uri
from django.utils.functional import cached_property
from django.utils.http import is_same_domain
@ -266,15 +264,6 @@ class HttpRequest:
def is_secure(self):
return self.scheme == 'https'
def is_ajax(self):
warnings.warn(
'request.is_ajax() is deprecated. See Django 3.1 release notes '
'for more details about this deprecation.',
RemovedInDjango40Warning,
stacklevel=2,
)
return self.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
@property
def encoding(self):
return self._encoding

View File

@ -425,23 +425,6 @@ Methods
<django.views.decorators.vary.vary_on_headers>` so that the responses are
properly cached.
.. method:: HttpRequest.is_ajax()
.. deprecated:: 3.1
Returns ``True`` if the request was made via an ``XMLHttpRequest``, by
checking the ``HTTP_X_REQUESTED_WITH`` header for the string
``'XMLHttpRequest'``. Most modern JavaScript libraries send this header.
If you write your own ``XMLHttpRequest`` call (on the browser side), you'll
have to set this header manually if you want ``is_ajax()`` to work.
If a response varies on whether or not it's requested via AJAX and you are
using some form of caching like Django's :mod:`cache middleware
<django.middleware.cache>`, you should decorate the view with
:func:`vary_on_headers('X-Requested-With')
<django.views.decorators.vary.vary_on_headers>` so that the responses are
properly cached.
.. method:: HttpRequest.read(size=None)
.. method:: HttpRequest.readline()
.. method:: HttpRequest.readlines()

View File

@ -275,3 +275,5 @@ to remove usage of these features.
* The ``django.db.models.query_utils.InvalidQuery`` exception class is removed.
* The ``django-admin.py`` entry point is removed.
* The ``HttpRequest.is_ajax()`` method is removed.

View File

@ -1,12 +0,0 @@
from django.http import HttpRequest
from django.test import SimpleTestCase, ignore_warnings
from django.utils.deprecation import RemovedInDjango40Warning
@ignore_warnings(category=RemovedInDjango40Warning)
class TestDeprecatedIsAjax(SimpleTestCase):
def test_is_ajax(self):
request = HttpRequest()
self.assertIs(request.is_ajax(), False)
request.META['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest'
self.assertIs(request.is_ajax(), True)