1
0
mirror of https://github.com/django/django.git synced 2024-12-22 17:16:24 +00:00

Fixed #31534 -- Deprecated django.conf.urls.url().

This commit is contained in:
David Smith 2020-05-04 19:33:35 +01:00 committed by Mariusz Felisiak
parent f2051eb8a7
commit 2522559d1a
10 changed files with 39 additions and 11 deletions

View File

@ -1,4 +1,7 @@
import warnings
from django.urls import include, re_path from django.urls import include, re_path
from django.utils.deprecation import RemovedInDjango40Warning
from django.views import defaults from django.views import defaults
__all__ = ['handler400', 'handler403', 'handler404', 'handler500', 'include', 'url'] __all__ = ['handler400', 'handler403', 'handler404', 'handler500', 'include', 'url']
@ -10,4 +13,9 @@ handler500 = defaults.server_error
def url(regex, view, kwargs=None, name=None): def url(regex, view, kwargs=None, name=None):
warnings.warn(
'django.conf.urls.url() is deprecated in favor of '
'django.urls.re_path().',
RemovedInDjango40Warning,
)
return re_path(regex, view, kwargs, name) return re_path(regex, view, kwargs, name)

View File

@ -196,8 +196,8 @@ class JavaScriptCatalog(View):
Return the selected language catalog as a JavaScript library. Return the selected language catalog as a JavaScript library.
Receive the list of packages to check for translations in the `packages` Receive the list of packages to check for translations in the `packages`
kwarg either from the extra dictionary passed to the url() function or as a kwarg either from the extra dictionary passed to the path() function or as
plus-sign delimited string from the request. Default is 'django.conf'. a plus-sign delimited string from the request. Default is 'django.conf'.
You can override the gettext domain for this view, but usually you don't You can override the gettext domain for this view, but usually you don't
want to do that as JavaScript messages go to the djangojs domain. This want to do that as JavaScript messages go to the djangojs domain. This

View File

@ -81,6 +81,8 @@ details on these changes.
* The model ``NullBooleanField`` will be removed. A stub field will remain for * The model ``NullBooleanField`` will be removed. A stub field will remain for
compatibility with historical migrations. compatibility with historical migrations.
* ``django.conf.urls.url()`` will be removed.
See the :ref:`Django 3.1 release notes <deprecated-features-3.1>` for more See the :ref:`Django 3.1 release notes <deprecated-features-3.1>` for more
details on these changes. details on these changes.

View File

@ -141,8 +141,11 @@ Helper function to return a URL pattern for serving files in debug mode::
.. function:: url(regex, view, kwargs=None, name=None) .. function:: url(regex, view, kwargs=None, name=None)
This function is an alias to :func:`django.urls.re_path()`. It's likely to be This function is an alias to :func:`django.urls.re_path()`.
deprecated in a future release.
.. deprecated:: 3.1
Alias of :func:`django.urls.re_path` for backwards compatibility.
``handler400`` ``handler400``
============== ==============

View File

@ -916,7 +916,7 @@ Miscellaneous
* :ref:`Authentication views <built-in-auth-views>` are now reversed by name, * :ref:`Authentication views <built-in-auth-views>` are now reversed by name,
not their locations in ``django.contrib.auth.views``. If you are using the not their locations in ``django.contrib.auth.views``. If you are using the
views without a ``name``, you should update your ``urlpatterns`` to use views without a ``name``, you should update your ``urlpatterns`` to use
:meth:`~django.conf.urls.url` with the ``name`` parameter. For example:: ``django.conf.urls.url()`` with the ``name`` parameter. For example::
(r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete') (r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete')

View File

@ -48,7 +48,7 @@ Bugfixes
* Updated ``urlpatterns`` examples generated by :djadmin:`startproject` to * Updated ``urlpatterns`` examples generated by :djadmin:`startproject` to
remove usage of referencing views by dotted path in remove usage of referencing views by dotted path in
:func:`~django.conf.urls.url` which is deprecated in Django 1.8 ``django.conf.urls.url()`` which is deprecated in Django 1.8
(:ticket:`24635`). (:ticket:`24635`).
* Fixed queries where an expression was referenced in ``order_by()``, but wasn't * Fixed queries where an expression was referenced in ``order_by()``, but wasn't

View File

@ -1270,7 +1270,7 @@ Thus ``patterns()`` serves little purpose and is a burden when teaching new user
(answering the newbie's question "why do I need this empty string as the first (answering the newbie's question "why do I need this empty string as the first
argument to ``patterns()``?"). For these reasons, we are deprecating it. argument to ``patterns()``?"). For these reasons, we are deprecating it.
Updating your code is as simple as ensuring that ``urlpatterns`` is a list of Updating your code is as simple as ensuring that ``urlpatterns`` is a list of
:func:`django.conf.urls.url` instances. For example:: ``django.conf.urls.url()`` instances. For example::
from django.conf.urls import url from django.conf.urls import url
from myapp import views from myapp import views
@ -1280,8 +1280,8 @@ Updating your code is as simple as ensuring that ``urlpatterns`` is a list of
url('^other/$', views.otherview), url('^other/$', views.otherview),
] ]
Passing a string as ``view`` to :func:`~django.conf.urls.url` Passing a string as ``view`` to ``django.conf.urls.url()``
------------------------------------------------------------- ----------------------------------------------------------
Related to the previous item, referencing views as strings in the ``url()`` Related to the previous item, referencing views as strings in the ``url()``
function is deprecated. Pass the callable view as described in the previous function is deprecated. Pass the callable view as described in the previous
@ -1319,7 +1319,7 @@ instead.
Related to the previous item, the ``prefix`` argument to Related to the previous item, the ``prefix`` argument to
:func:`django.conf.urls.i18n.i18n_patterns` has been deprecated. Simply pass a :func:`django.conf.urls.i18n.i18n_patterns` has been deprecated. Simply pass a
list of :func:`django.conf.urls.url` instances instead. list of ``django.conf.urls.url()`` instances instead.
Using an incorrect count of unpacked values in the :ttag:`for` template tag Using an incorrect count of unpacked values in the :ttag:`for` template tag
--------------------------------------------------------------------------- ---------------------------------------------------------------------------

View File

@ -1289,7 +1289,7 @@ to:
This change also means that the old way of including an ``AdminSite`` instance This change also means that the old way of including an ``AdminSite`` instance
is deprecated. Instead, pass ``admin.site.urls`` directly to is deprecated. Instead, pass ``admin.site.urls`` directly to
:func:`~django.conf.urls.url()`: ``django.conf.urls.url()``:
.. code-block:: python .. code-block:: python
:caption: urls.py :caption: urls.py

View File

@ -754,6 +754,9 @@ Miscellaneous
* The ``NullBooleanField`` model field is deprecated in favor of * The ``NullBooleanField`` model field is deprecated in favor of
``BooleanField(null=True)``. ``BooleanField(null=True)``.
* ``django.conf.urls.url()`` alias of :func:`django.urls.re_path` is
deprecated.
.. _removed-features-3.1: .. _removed-features-3.1:
Features removed in 3.1 Features removed in 3.1

View File

@ -1,9 +1,11 @@
import uuid import uuid
from django.conf.urls import url as conf_url
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
from django.test import SimpleTestCase from django.test import SimpleTestCase
from django.test.utils import override_settings from django.test.utils import override_settings
from django.urls import NoReverseMatch, Resolver404, path, resolve, reverse from django.urls import NoReverseMatch, Resolver404, path, resolve, reverse
from django.utils.deprecation import RemovedInDjango40Warning
from .converters import DynamicConverter from .converters import DynamicConverter
from .views import empty_view from .views import empty_view
@ -303,3 +305,13 @@ class ConversionExceptionTests(SimpleTestCase):
raise TypeError('This type error propagates.') raise TypeError('This type error propagates.')
with self.assertRaisesMessage(TypeError, 'This type error propagates.'): with self.assertRaisesMessage(TypeError, 'This type error propagates.'):
reverse('dynamic', kwargs={'value': object()}) reverse('dynamic', kwargs={'value': object()})
class DeprecationTests(SimpleTestCase):
def test_url_warning(self):
msg = (
'django.conf.urls.url() is deprecated in favor of '
'django.urls.re_path().'
)
with self.assertRaisesMessage(RemovedInDjango40Warning, msg):
conf_url(r'^regex/(?P<pk>[0-9]+)/$', empty_view, name='regex')