mirror of https://github.com/django/django.git
Fixed #30997 -- Deprecated HttpRequest.is_ajax().
This commit is contained in:
parent
7fa0fa45c5
commit
e348ab0d43
|
@ -1,6 +1,7 @@
|
|||
import cgi
|
||||
import codecs
|
||||
import copy
|
||||
import warnings
|
||||
from io import BytesIO
|
||||
from itertools import chain
|
||||
from urllib.parse import quote, urlencode, urljoin, urlsplit
|
||||
|
@ -15,6 +16,7 @@ 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, limited_parse_qsl
|
||||
|
@ -256,6 +258,11 @@ class HttpRequest:
|
|||
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,
|
||||
)
|
||||
return self.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
|
||||
|
||||
@property
|
||||
|
|
|
@ -44,6 +44,8 @@ details on these changes.
|
|||
|
||||
* The ``django-admin.py`` entry point will be removed.
|
||||
|
||||
* The ``HttpRequest.is_ajax()`` method will be removed.
|
||||
|
||||
See the :ref:`Django 3.1 release notes <deprecated-features-3.1>` for more
|
||||
details on these changes.
|
||||
|
||||
|
|
|
@ -431,6 +431,8 @@ Methods
|
|||
|
||||
.. 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.
|
||||
|
|
|
@ -609,7 +609,7 @@ Django 1.4 also includes several smaller improvements worth noting:
|
|||
* A new, plain-text, version of the HTTP 500 status code internal error page
|
||||
served when :setting:`DEBUG` is ``True`` is now sent to the client when
|
||||
Django detects that the request has originated in JavaScript code.
|
||||
(:meth:`~django.http.HttpRequest.is_ajax` is used for this.)
|
||||
(``is_ajax()`` is used for this.)
|
||||
|
||||
Like its HTML counterpart, it contains a collection of different
|
||||
pieces of information about the state of the application.
|
||||
|
|
|
@ -471,6 +471,13 @@ Miscellaneous
|
|||
* The ``django-admin.py`` entry point is deprecated in favor of
|
||||
``django-admin``.
|
||||
|
||||
* The ``HttpRequest.is_ajax()`` method is deprecated as it relied on a
|
||||
jQuery-specific way of signifying AJAX calls, while the current usage tends
|
||||
to use the ``fetch()`` JavaScript API. Depending on your use case, you can
|
||||
either write your own AJAX detection method, or use the new
|
||||
:meth:`.HttpRequest.accepts` method if your code depends on the client
|
||||
``Accept`` HTTP header.
|
||||
|
||||
.. _removed-features-3.1:
|
||||
|
||||
Features removed in 3.1
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
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)
|
Loading…
Reference in New Issue