summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2018-12-07 17:52:28 -0500
committerTim Graham <timograham@gmail.com>2018-12-31 10:47:32 -0500
commit043bd709425149b8eff3fb821cba5c23aaebd0df (patch)
tree7624be405a6a6e5a041e2852251ef76e9d28fa7d
parent1136d57f01ce3e3efab44163ccd7b3b34ec4207f (diff)
Updated test URL patterns to use path() and re_path().
-rw-r--r--tests/admin_changelist/urls.py4
-rw-r--r--tests/admin_custom_urls/models.py4
-rw-r--r--tests/admin_custom_urls/urls.py4
-rw-r--r--tests/admin_docs/namespace_urls.py10
-rw-r--r--tests/admin_docs/urls.py18
-rw-r--r--tests/admin_inlines/urls.py4
-rw-r--r--tests/admin_scripts/urls.py6
-rw-r--r--tests/admin_utils/urls.py4
-rw-r--r--tests/admin_views/admin.py4
-rw-r--r--tests/admin_views/customadmin.py4
-rw-r--r--tests/admin_views/test_adminsite.py5
-rw-r--r--tests/admin_views/test_multidb.py5
-rw-r--r--tests/admin_views/urls.py32
-rw-r--r--tests/admin_widgets/urls.py4
-rw-r--r--tests/auth_tests/test_admin_multidb.py5
-rw-r--r--tests/auth_tests/test_views.py2
-rw-r--r--tests/auth_tests/urls.py91
-rw-r--r--tests/auth_tests/urls_admin.py4
-rw-r--r--tests/auth_tests/urls_custom_user_admin.py4
-rw-r--r--tests/check_framework/test_urls.py2
-rw-r--r--tests/check_framework/urls/beginning_with_slash.py5
-rw-r--r--tests/check_framework/urls/include_with_dollar.py4
-rw-r--r--tests/check_framework/urls/name_with_colon.py4
-rw-r--r--tests/check_framework/urls/no_warnings.py8
-rw-r--r--tests/check_framework/urls/no_warnings_i18n.py4
-rw-r--r--tests/check_framework/urls/non_unique_namespaces.py14
-rw-r--r--tests/check_framework/urls/unique_namespaces.py18
-rw-r--r--tests/check_framework/urls/warning_in_include.py6
-rw-r--r--tests/conditional_processing/urls.py18
-rw-r--r--tests/contenttypes_tests/urls.py4
-rw-r--r--tests/context_processors/urls.py6
-rw-r--r--tests/file_storage/urls.py4
-rw-r--r--tests/file_uploads/urls.py26
-rw-r--r--tests/flatpages_tests/urls.py10
-rw-r--r--tests/forms_tests/urls.py4
-rw-r--r--tests/generic_inline_admin/urls.py4
-rw-r--r--tests/gis_tests/geoadmin/urls.py4
-rw-r--r--tests/gis_tests/geoapp/urls.py12
-rw-r--r--tests/handlers/tests_custom_error_handlers.py4
-rw-r--r--tests/handlers/urls.py15
-rw-r--r--tests/i18n/patterns/urls/default.py18
-rw-r--r--tests/i18n/patterns/urls/disabled.py4
-rw-r--r--tests/i18n/patterns/urls/included.py4
-rw-r--r--tests/i18n/patterns/urls/namespace.py7
-rw-r--r--tests/i18n/patterns/urls/path_unused.py4
-rw-r--r--tests/i18n/patterns/urls/wrong.py4
-rw-r--r--tests/i18n/patterns/urls/wrong_namespace.py4
-rw-r--r--tests/i18n/urls.py6
-rw-r--r--tests/i18n/urls_default_unprefixed.py8
-rw-r--r--tests/logging_tests/urls.py7
-rw-r--r--tests/logging_tests/urls_i18n.py4
-rw-r--r--tests/messages_tests/urls.py17
-rw-r--r--tests/middleware/cond_get_urls.py4
-rw-r--r--tests/middleware/extra_urls.py8
-rw-r--r--tests/middleware/urls.py10
-rw-r--r--tests/middleware_exceptions/urls.py12
-rw-r--r--tests/project_template/urls.py4
-rw-r--r--tests/proxy_models/urls.py4
-rw-r--r--tests/redirects_tests/urls.py4
-rw-r--r--tests/resolve_url/urls.py4
-rw-r--r--tests/servers/urls.py20
-rw-r--r--tests/shortcuts/urls.py22
-rw-r--r--tests/sitemaps_tests/urls/http.py67
-rw-r--r--tests/sitemaps_tests/urls/https.py7
-rw-r--r--tests/sitemaps_tests/urls/index_only.py5
-rw-r--r--tests/staticfiles_tests/urls/default.py4
-rw-r--r--tests/syndication_tests/urls.py40
-rw-r--r--tests/template_tests/alternate_urls.py6
-rw-r--r--tests/template_tests/urls.py20
-rw-r--r--tests/test_client/urls.py78
-rw-r--r--tests/test_client_regress/urls.py70
-rw-r--r--tests/test_utils/tests.py7
-rw-r--r--tests/test_utils/urls.py6
-rw-r--r--tests/timezones/urls.py4
-rw-r--r--tests/urlpatterns/path_urls.py3
-rw-r--r--tests/urlpatterns_reverse/erroneous_urls.py4
-rw-r--r--tests/urlpatterns_reverse/extra_urls.py10
-rw-r--r--tests/urlpatterns_reverse/included_app_urls.py14
-rw-r--r--tests/urlpatterns_reverse/included_named_urls.py10
-rw-r--r--tests/urlpatterns_reverse/included_named_urls2.py8
-rw-r--r--tests/urlpatterns_reverse/included_namespace_urls.py22
-rw-r--r--tests/urlpatterns_reverse/included_no_kwargs_urls.py4
-rw-r--r--tests/urlpatterns_reverse/included_urls.py8
-rw-r--r--tests/urlpatterns_reverse/included_urls2.py6
-rw-r--r--tests/urlpatterns_reverse/method_view_urls.py6
-rw-r--r--tests/urlpatterns_reverse/named_urls.py10
-rw-r--r--tests/urlpatterns_reverse/named_urls_conflict.py18
-rw-r--r--tests/urlpatterns_reverse/namespace_urls.py54
-rw-r--r--tests/urlpatterns_reverse/nested_urls.py10
-rw-r--r--tests/urlpatterns_reverse/reverse_lazy_urls.py10
-rw-r--r--tests/urlpatterns_reverse/tests.py30
-rw-r--r--tests/urlpatterns_reverse/urlconf_inner.py4
-rw-r--r--tests/urlpatterns_reverse/urlconf_outer.py6
-rw-r--r--tests/urlpatterns_reverse/urls.py116
-rw-r--r--tests/urlpatterns_reverse/urls_without_handlers.py6
-rw-r--r--tests/urlpatterns_reverse/utils.py8
-rw-r--r--tests/user_commands/urls.py4
-rw-r--r--tests/view_tests/default_urls.py4
-rw-r--r--tests/view_tests/generic_urls.py16
-rw-r--r--tests/view_tests/regression_21530_urls.py4
-rw-r--r--tests/view_tests/tests/test_debug.py12
-rw-r--r--tests/view_tests/tests/test_i18n.py2
-rw-r--r--tests/view_tests/urls.py67
-rw-r--r--tests/wsgi/urls.py6
104 files changed, 692 insertions, 673 deletions
diff --git a/tests/admin_changelist/urls.py b/tests/admin_changelist/urls.py
index 1f553a85a9..be569cdca5 100644
--- a/tests/admin_changelist/urls.py
+++ b/tests/admin_changelist/urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
from . import admin
urlpatterns = [
- url(r'^admin/', admin.site.urls),
+ path('admin/', admin.site.urls),
]
diff --git a/tests/admin_custom_urls/models.py b/tests/admin_custom_urls/models.py
index 1fc30ec18c..8b91383b0f 100644
--- a/tests/admin_custom_urls/models.py
+++ b/tests/admin_custom_urls/models.py
@@ -33,7 +33,7 @@ class ActionAdmin(admin.ModelAdmin):
def get_urls(self):
# Add the URL of our custom 'add_view' view to the front of the URLs
# list. Remove the existing one(s) first
- from django.conf.urls import url
+ from django.urls import re_path
def wrap(view):
def wrapper(*args, **kwargs):
@@ -45,7 +45,7 @@ class ActionAdmin(admin.ModelAdmin):
view_name = '%s_%s_add' % info
return [
- url(r'^!add/$', wrap(self.add_view), name=view_name),
+ re_path('^!add/$', wrap(self.add_view), name=view_name),
] + self.remove_url(view_name)
diff --git a/tests/admin_custom_urls/urls.py b/tests/admin_custom_urls/urls.py
index b07e1395b9..ade49b3957 100644
--- a/tests/admin_custom_urls/urls.py
+++ b/tests/admin_custom_urls/urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
from .models import site
urlpatterns = [
- url(r'^admin/', site.urls),
+ path('admin/', site.urls),
]
diff --git a/tests/admin_docs/namespace_urls.py b/tests/admin_docs/namespace_urls.py
index d05922c33e..719bf0ddf5 100644
--- a/tests/admin_docs/namespace_urls.py
+++ b/tests/admin_docs/namespace_urls.py
@@ -1,14 +1,14 @@
-from django.conf.urls import include, url
from django.contrib import admin
+from django.urls import include, path
from . import views
backend_urls = ([
- url(r'^something/$', views.XViewClass.as_view(), name='something'),
+ path('something/', views.XViewClass.as_view(), name='something'),
], 'backend')
urlpatterns = [
- url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
- url(r'^admin/', admin.site.urls),
- url(r'^api/backend/', include(backend_urls, namespace='backend')),
+ path('admin/doc/', include('django.contrib.admindocs.urls')),
+ path('admin/', admin.site.urls),
+ path('api/backend/', include(backend_urls, namespace='backend')),
]
diff --git a/tests/admin_docs/urls.py b/tests/admin_docs/urls.py
index 67c72b249c..f535afc9f2 100644
--- a/tests/admin_docs/urls.py
+++ b/tests/admin_docs/urls.py
@@ -1,18 +1,18 @@
-from django.conf.urls import include, url
from django.contrib import admin
+from django.urls import include, path
from . import views
ns_patterns = ([
- url(r'^xview/func/$', views.xview_dec(views.xview), name='func'),
+ path('xview/func/', views.xview_dec(views.xview), name='func'),
], 'test')
urlpatterns = [
- url(r'^admin/', admin.site.urls),
- url(r'^admindocs/', include('django.contrib.admindocs.urls')),
- url(r'^', include(ns_patterns, namespace='test')),
- url(r'^xview/func/$', views.xview_dec(views.xview)),
- url(r'^xview/class/$', views.xview_dec(views.XViewClass.as_view())),
- url(r'^xview/callable_object/$', views.xview_dec(views.XViewCallableObject())),
- url(r'^xview/callable_object_without_xview/$', views.XViewCallableObject()),
+ path('admin/', admin.site.urls),
+ path('admindocs/', include('django.contrib.admindocs.urls')),
+ path('', include(ns_patterns, namespace='test')),
+ path('xview/func/', views.xview_dec(views.xview)),
+ path('xview/class/', views.xview_dec(views.XViewClass.as_view())),
+ path('xview/callable_object/', views.xview_dec(views.XViewCallableObject())),
+ path('xview/callable_object_without_xview/', views.XViewCallableObject()),
]
diff --git a/tests/admin_inlines/urls.py b/tests/admin_inlines/urls.py
index 1f553a85a9..be569cdca5 100644
--- a/tests/admin_inlines/urls.py
+++ b/tests/admin_inlines/urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
from . import admin
urlpatterns = [
- url(r'^admin/', admin.site.urls),
+ path('admin/', admin.site.urls),
]
diff --git a/tests/admin_scripts/urls.py b/tests/admin_scripts/urls.py
index edb5e1f3b0..b5bb443926 100644
--- a/tests/admin_scripts/urls.py
+++ b/tests/admin_scripts/urls.py
@@ -1,11 +1,11 @@
import os
-from django.conf.urls import url
+from django.urls import path
from django.views.static import serve
here = os.path.dirname(__file__)
urlpatterns = [
- url(r'^custom_templates/(?P<path>.*)$', serve, {
- 'document_root': os.path.join(here, 'custom_templates')}),
+ path('custom_templates/<path:path>', serve, {
+ 'document_root': os.path.join(here, 'custom_templates')}),
]
diff --git a/tests/admin_utils/urls.py b/tests/admin_utils/urls.py
index b3b865f8bc..2e472fc575 100644
--- a/tests/admin_utils/urls.py
+++ b/tests/admin_utils/urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
from .admin import site
urlpatterns = [
- url(r'^test_admin/admin/', site.urls),
+ path('test_admin/admin/', site.urls),
]
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py
index 5dc2a5811b..5c4151c270 100644
--- a/tests/admin_views/admin.py
+++ b/tests/admin_views/admin.py
@@ -5,7 +5,6 @@ from io import StringIO
from wsgiref.util import FileWrapper
from django import forms
-from django.conf.urls import url
from django.contrib import admin
from django.contrib.admin import BooleanFieldListFilter
from django.contrib.admin.views.main import ChangeList
@@ -17,6 +16,7 @@ from django.core.mail import EmailMessage
from django.db import models
from django.forms.models import BaseModelFormSet
from django.http import HttpResponse, StreamingHttpResponse
+from django.urls import path
from django.utils.html import format_html
from django.utils.safestring import mark_safe
@@ -704,7 +704,7 @@ class ReportAdmin(admin.ModelAdmin):
def get_urls(self):
# Corner case: Don't call parent implementation
- return [url(r'^extra/$', self.extra, name='cable_extra')]
+ return [path('extra/', self.extra, name='cable_extra')]
class CustomTemplateBooleanFieldListFilter(BooleanFieldListFilter):
diff --git a/tests/admin_views/customadmin.py b/tests/admin_views/customadmin.py
index 9331918b37..a9d8a060b9 100644
--- a/tests/admin_views/customadmin.py
+++ b/tests/admin_views/customadmin.py
@@ -1,11 +1,11 @@
"""
A second, custom AdminSite -- see tests.CustomAdminSiteTests.
"""
-from django.conf.urls import url
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from django.http import HttpResponse
+from django.urls import path
from . import admin as base_admin, forms, models
@@ -25,7 +25,7 @@ class Admin2(admin.AdminSite):
def get_urls(self):
return [
- url(r'^my_view/$', self.admin_view(self.my_view), name='my_view'),
+ path('my_view/', self.admin_view(self.my_view), name='my_view'),
] + super().get_urls()
def my_view(self, request):
diff --git a/tests/admin_views/test_adminsite.py b/tests/admin_views/test_adminsite.py
index 86e0a357db..efee6f39c6 100644
--- a/tests/admin_views/test_adminsite.py
+++ b/tests/admin_views/test_adminsite.py
@@ -1,10 +1,9 @@
-from django.conf.urls import url
from django.contrib import admin
from django.contrib.admin.actions import delete_selected
from django.contrib.auth.models import User
from django.test import SimpleTestCase, TestCase, override_settings
from django.test.client import RequestFactory
-from django.urls import reverse
+from django.urls import path, reverse
from .models import Article
@@ -13,7 +12,7 @@ site.register(User)
site.register(Article)
urlpatterns = [
- url(r'^test_admin/admin/', site.urls),
+ path('test_admin/admin/', site.urls),
]
diff --git a/tests/admin_views/test_multidb.py b/tests/admin_views/test_multidb.py
index 9907e16d69..ec3591d1fe 100644
--- a/tests/admin_views/test_multidb.py
+++ b/tests/admin_views/test_multidb.py
@@ -1,11 +1,10 @@
from unittest import mock
-from django.conf.urls import url
from django.contrib import admin
from django.contrib.auth.models import User
from django.db import connections
from django.test import TestCase, override_settings
-from django.urls import reverse
+from django.urls import path, reverse
from .models import Book
@@ -23,7 +22,7 @@ site = admin.AdminSite(name='test_adminsite')
site.register(Book)
urlpatterns = [
- url(r'^admin/', site.urls),
+ path('admin/', site.urls),
]
diff --git a/tests/admin_views/urls.py b/tests/admin_views/urls.py
index 545df313e4..fdb61d759d 100644
--- a/tests/admin_views/urls.py
+++ b/tests/admin_views/urls.py
@@ -1,23 +1,23 @@
-from django.conf.urls import include, url
+from django.urls import include, path
from . import admin, custom_has_permission_admin, customadmin, views
from .test_autocomplete_view import site as autocomplete_site
urlpatterns = [
- url(r'^test_admin/admin/doc/', include('django.contrib.admindocs.urls')),
- url(r'^test_admin/admin/secure-view/$', views.secure_view, name='secure_view'),
- url(r'^test_admin/admin/secure-view2/$', views.secure_view2, name='secure_view2'),
- url(r'^test_admin/admin/', admin.site.urls),
- url(r'^test_admin/admin2/', customadmin.site.urls),
- url(r'^test_admin/admin3/', (admin.site.get_urls(), 'admin', 'admin3'), {'form_url': 'pony'}),
- url(r'^test_admin/admin4/', customadmin.simple_site.urls),
- url(r'^test_admin/admin5/', admin.site2.urls),
- url(r'^test_admin/admin6/', admin.site6.urls),
- url(r'^test_admin/admin7/', admin.site7.urls),
+ path('test_admin/admin/doc/', include('django.contrib.admindocs.urls')),
+ path('test_admin/admin/secure-view/', views.secure_view, name='secure_view'),
+ path('test_admin/admin/secure-view2/', views.secure_view2, name='secure_view2'),
+ path('test_admin/admin/', admin.site.urls),
+ path('test_admin/admin2/', customadmin.site.urls),
+ path('test_admin/admin3/', (admin.site.get_urls(), 'admin', 'admin3'), {'form_url': 'pony'}),
+ path('test_admin/admin4/', customadmin.simple_site.urls),
+ path('test_admin/admin5/', admin.site2.urls),
+ path('test_admin/admin6/', admin.site6.urls),
+ path('test_admin/admin7/', admin.site7.urls),
# All admin views accept `extra_context` to allow adding it like this:
- url(r'^test_admin/admin8/', (admin.site.get_urls(), 'admin', 'admin-extra-context'), {'extra_context': {}}),
- url(r'^test_admin/admin9/', admin.site9.urls),
- url(r'^test_admin/admin10/', admin.site10.urls),
- url(r'^test_admin/has_permission_admin/', custom_has_permission_admin.site.urls),
- url(r'^test_admin/autocomplete_admin/', autocomplete_site.urls),
+ path('test_admin/admin8/', (admin.site.get_urls(), 'admin', 'admin-extra-context'), {'extra_context': {}}),
+ path('test_admin/admin9/', admin.site9.urls),
+ path('test_admin/admin10/', admin.site10.urls),
+ path('test_admin/has_permission_admin/', custom_has_permission_admin.site.urls),
+ path('test_admin/autocomplete_admin/', autocomplete_site.urls),
]
diff --git a/tests/admin_widgets/urls.py b/tests/admin_widgets/urls.py
index 3381b2f13a..d9372ac756 100644
--- a/tests/admin_widgets/urls.py
+++ b/tests/admin_widgets/urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
from . import widgetadmin
urlpatterns = [
- url(r'^', widgetadmin.site.urls),
+ path('', widgetadmin.site.urls),
]
diff --git a/tests/auth_tests/test_admin_multidb.py b/tests/auth_tests/test_admin_multidb.py
index f86ea86dd8..eff458de19 100644
--- a/tests/auth_tests/test_admin_multidb.py
+++ b/tests/auth_tests/test_admin_multidb.py
@@ -1,12 +1,11 @@
from unittest import mock
-from django.conf.urls import url
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from django.db import connections
from django.test import TestCase, override_settings
-from django.urls import reverse
+from django.urls import path, reverse
class Router:
@@ -22,7 +21,7 @@ site = admin.AdminSite(name='test_adminsite')
site.register(User, admin_class=UserAdmin)
urlpatterns = [
- url(r'^admin/', site.urls),
+ path('admin/', site.urls),
]
diff --git a/tests/auth_tests/test_views.py b/tests/auth_tests/test_views.py
index d4311a0fad..4949ce1bf4 100644
--- a/tests/auth_tests/test_views.py
+++ b/tests/auth_tests/test_views.py
@@ -319,7 +319,7 @@ class PasswordResetTest(AuthViewsTestCase):
]
)
def test_confirm_login_post_reset_custom_backend(self):
- # This backend is specified in the url().
+ # This backend is specified in the URL pattern.
backend = 'django.contrib.auth.backends.AllowAllUsersModelBackend'
url, path = self._test_confirm_start()
path = path.replace('/reset/', '/reset/post_reset_login_custom_backend/')
diff --git a/tests/auth_tests/urls.py b/tests/auth_tests/urls.py
index 9dc23cee88..d0b259935b 100644
--- a/tests/auth_tests/urls.py
+++ b/tests/auth_tests/urls.py
@@ -1,4 +1,3 @@
-from django.conf.urls import url
from django.contrib import admin
from django.contrib.auth import views
from django.contrib.auth.decorators import login_required, permission_required
@@ -8,7 +7,7 @@ from django.contrib.messages.api import info
from django.http import HttpRequest, HttpResponse
from django.shortcuts import render
from django.template import RequestContext, Template
-from django.urls import path, reverse_lazy
+from django.urls import path, re_path, reverse_lazy
from django.views.decorators.cache import never_cache
@@ -82,63 +81,73 @@ uid_token = r'(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z
# special urls for auth test cases
urlpatterns = auth_urlpatterns + [
- url(r'^logout/custom_query/$', views.LogoutView.as_view(redirect_field_name='follow')),
- url(r'^logout/next_page/$', views.LogoutView.as_view(next_page='/somewhere/')),
- url(r'^logout/next_page/named/$', views.LogoutView.as_view(next_page='password_reset')),
- url(r'^logout/allowed_hosts/$', views.LogoutView.as_view(success_url_allowed_hosts={'otherserver'})),
- url(r'^remote_user/$', remote_user_auth_view),
+ path('logout/custom_query/', views.LogoutView.as_view(redirect_field_name='follow')),
+ path('logout/next_page/', views.LogoutView.as_view(next_page='/somewhere/')),
+ path('logout/next_page/named/', views.LogoutView.as_view(next_page='password_reset')),
+ path('logout/allowed_hosts/', views.LogoutView.as_view(success_url_allowed_hosts={'otherserver'})),
+ path('remote_user/', remote_user_auth_view),
- url(r'^password_reset_from_email/$',
- views.PasswordResetView.as_view(from_email='staffmember@example.com')),
- url(r'^password_reset_extra_email_context/$',
+ path('password_reset_from_email/', views.PasswordResetView.as_view(from_email='staffmember@example.com')),
+ path(
+ 'password_reset_extra_email_context/',
views.PasswordResetView.as_view(extra_email_context={'greeting': 'Hello!'})),
- url(r'^password_reset/custom_redirect/$',
+ path(
+ 'password_reset/custom_redirect/',
views.PasswordResetView.as_view(success_url='/custom/')),
- url(r'^password_reset/custom_redirect/named/$',
+ path(
+ 'password_reset/custom_redirect/named/',
views.PasswordResetView.as_view(success_url=reverse_lazy('password_reset'))),
- url(r'^password_reset/html_email_template/$',
+ path(
+ 'password_reset/html_email_template/',
views.PasswordResetView.as_view(
html_email_template_name='registration/html_password_reset_email.html'
)),
- url(r'^reset/custom/{}/$'.format(uid_token),
- views.PasswordResetConfirmView.as_view(success_url='/custom/')),
- url(r'^reset/custom/named/{}/$'.format(uid_token),
- views.PasswordResetConfirmView.as_view(success_url=reverse_lazy('password_reset'))),
- url(r'^reset/post_reset_login/{}/$'.format(uid_token),
- views.PasswordResetConfirmView.as_view(post_reset_login=True)),
- url(
- r'^reset/post_reset_login_custom_backend/{}/$'.format(uid_token),
+ re_path(
+ '^reset/custom/{}/$'.format(uid_token),
+ views.PasswordResetConfirmView.as_view(success_url='/custom/'),
+ ),
+ re_path(
+ '^reset/custom/named/{}/$'.format(uid_token),
+ views.PasswordResetConfirmView.as_view(success_url=reverse_lazy('password_reset')),
+ ),
+ re_path(
+ '^reset/post_reset_login/{}/$'.format(uid_token),
+ views.PasswordResetConfirmView.as_view(post_reset_login=True),
+ ),
+ re_path(
+ '^reset/post_reset_login_custom_backend/{}/$'.format(uid_token),
views.PasswordResetConfirmView.as_view(
post_reset_login=True,
post_reset_login_backend='django.contrib.auth.backends.AllowAllUsersModelBackend',
),
),
- url(r'^password_change/custom/$',
- views.PasswordChangeView.as_view(success_url='/custom/')),
- url(r'^password_change/custom/named/$',
- views.PasswordChangeView.as_view(success_url=reverse_lazy('password_reset'))),
- url(r'^login_required/$', login_required(views.PasswordResetView.as_view())),
- url(r'^login_required_login_url/$', login_required(views.PasswordResetView.as_view(), login_url='/somewhere/')),
+ path('password_change/custom/',
+ views.PasswordChangeView.as_view(success_url='/custom/')),
+ path('password_change/custom/named/',
+ views.PasswordChangeView.as_view(success_url=reverse_lazy('password_reset'))),
+ path('login_required/', login_required(views.PasswordResetView.as_view())),
+ path('login_required_login_url/', login_required(views.PasswordResetView.as_view(), login_url='/somewhere/')),
- url(r'^auth_processor_no_attr_access/$', auth_processor_no_attr_access),
- url(r'^auth_processor_attr_access/$', auth_processor_attr_access),
- url(r'^auth_processor_user/$', auth_processor_user),
- url(r'^auth_processor_perms/$', auth_processor_perms),
- url(r'^auth_processor_perm_in_perms/$', auth_processor_perm_in_perms),
- url(r'^auth_processor_messages/$', auth_processor_messages),
- url(r'^custom_request_auth_login/$',
+ path('auth_processor_no_attr_access/', auth_processor_no_attr_access),
+ path('auth_processor_attr_access/', auth_processor_attr_access),
+ path('auth_processor_user/', auth_processor_user),
+ path('auth_processor_perms/', auth_processor_perms),
+ path('auth_processor_perm_in_perms/', auth_processor_perm_in_perms),
+ path('auth_processor_messages/', auth_processor_messages),
+ path(
+ 'custom_request_auth_login/',
views.LoginView.as_view(authentication_form=CustomRequestAuthenticationForm)),
- url(r'^userpage/(.+)/$', userpage, name="userpage"),
- url(r'^login/redirect_authenticated_user_default/$', views.LoginView.as_view()),
- url(r'^login/redirect_authenticated_user/$',
- views.LoginView.as_view(redirect_authenticated_user=True)),
- url(r'^login/allowed_hosts/$',
- views.LoginView.as_view(success_url_allowed_hosts={'otherserver'})),
+ re_path('^userpage/(.+)/$', userpage, name='userpage'),
+ path('login/redirect_authenticated_user_default/', views.LoginView.as_view()),
+ path('login/redirect_authenticated_user/',
+ views.LoginView.as_view(redirect_authenticated_user=True)),
+ path('login/allowed_hosts/',
+ views.LoginView.as_view(success_url_allowed_hosts={'otherserver'})),
path('permission_required_redirect/', permission_required_redirect),
path('permission_required_exception/', permission_required_exception),
path('login_and_permission_required_exception/', login_and_permission_required_exception),
# This line is only required to render the password reset with is_admin=True
- url(r'^admin/', admin.site.urls),
+ path('admin/', admin.site.urls),
]
diff --git a/tests/auth_tests/urls_admin.py b/tests/auth_tests/urls_admin.py
index 8e5b0f1f0c..21b0073210 100644
--- a/tests/auth_tests/urls_admin.py
+++ b/tests/auth_tests/urls_admin.py
@@ -2,11 +2,11 @@
Test URLs for auth admins.
"""
-from django.conf.urls import url
from django.contrib import admin
from django.contrib.auth.admin import GroupAdmin, UserAdmin
from django.contrib.auth.models import Group, User
from django.contrib.auth.urls import urlpatterns
+from django.urls import path
# Create a silo'd admin site for just the user/group admins.
site = admin.AdminSite(name='auth_test_admin')
@@ -14,5 +14,5 @@ site.register(User, UserAdmin)
site.register(Group, GroupAdmin)
urlpatterns += [
- url(r'^admin/', site.urls),
+ path('admin/', site.urls),
]
diff --git a/tests/auth_tests/urls_custom_user_admin.py b/tests/auth_tests/urls_custom_user_admin.py
index 59b80d04d7..83d93d5cfe 100644
--- a/tests/auth_tests/urls_custom_user_admin.py
+++ b/tests/auth_tests/urls_custom_user_admin.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
+from django.urls import path
site = admin.AdminSite(name='custom_user_admin')
@@ -19,5 +19,5 @@ class CustomUserAdmin(UserAdmin):
site.register(get_user_model(), CustomUserAdmin)
urlpatterns = [
- url(r'^admin/', site.urls),
+ path('admin/', site.urls),
]
diff --git a/tests/check_framework/test_urls.py b/tests/check_framework/test_urls.py
index cdc9595731..67de26c690 100644
--- a/tests/check_framework/test_urls.py
+++ b/tests/check_framework/test_urls.py
@@ -20,7 +20,7 @@ class CheckUrlConfigTests(SimpleTestCase):
@override_settings(ROOT_URLCONF='check_framework.urls.warning_in_include')
def test_check_resolver_recursive(self):
- # The resolver is checked recursively (examining url()s in include()).
+ # The resolver is checked recursively (examining URL patterns in include()).
result = check_url_config(None)
self.assertEqual(len(result), 1)
warning = result[0]
diff --git a/tests/check_framework/urls/beginning_with_slash.py b/tests/check_framework/urls/beginning_with_slash.py
index 8dac96745c..bd4e29d8f1 100644
--- a/tests/check_framework/urls/beginning_with_slash.py
+++ b/tests/check_framework/urls/beginning_with_slash.py
@@ -1,7 +1,6 @@
-from django.conf.urls import url
-from django.urls import path
+from django.urls import path, re_path
urlpatterns = [
path('/path-starting-with-slash/', lambda x: x),
- url(r'/url-starting-with-slash/$', lambda x: x),
+ re_path(r'/url-starting-with-slash/$', lambda x: x),
]
diff --git a/tests/check_framework/urls/include_with_dollar.py b/tests/check_framework/urls/include_with_dollar.py
index 3d4a55b41f..ce921bbec5 100644
--- a/tests/check_framework/urls/include_with_dollar.py
+++ b/tests/check_framework/urls/include_with_dollar.py
@@ -1,5 +1,5 @@
-from django.conf.urls import include, url
+from django.urls import include, re_path
urlpatterns = [
- url(r'^include-with-dollar$', include([])),
+ re_path('^include-with-dollar$', include([])),
]
diff --git a/tests/check_framework/urls/name_with_colon.py b/tests/check_framework/urls/name_with_colon.py
index f7bc0c18b4..273c99324c 100644
--- a/tests/check_framework/urls/name_with_colon.py
+++ b/tests/check_framework/urls/name_with_colon.py
@@ -1,5 +1,5 @@
-from django.conf.urls import url
+from django.urls import re_path
urlpatterns = [
- url(r'^$', lambda x: x, name='name_with:colon'),
+ re_path('^$', lambda x: x, name='name_with:colon'),
]
diff --git a/tests/check_framework/urls/no_warnings.py b/tests/check_framework/urls/no_warnings.py
index 773ad27ef1..e1846fb884 100644
--- a/tests/check_framework/urls/no_warnings.py
+++ b/tests/check_framework/urls/no_warnings.py
@@ -1,9 +1,9 @@
-from django.conf.urls import include, url
+from django.urls import include, path, re_path
urlpatterns = [
- url(r'^foo/', lambda x: x, name='foo'),
+ path('foo/', lambda x: x, name='foo'),
# This dollar is ok as it is escaped
- url(r'^\$', include([
- url(r'^bar/$', lambda x: x, name='bar'),
+ re_path(r'^\$', include([
+ path('bar/', lambda x: x, name='bar'),
])),
]
diff --git a/tests/check_framework/urls/no_warnings_i18n.py b/tests/check_framework/urls/no_warnings_i18n.py
index 7c494c7dc9..37da78f29d 100644
--- a/tests/check_framework/urls/no_warnings_i18n.py
+++ b/tests/check_framework/urls/no_warnings_i18n.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
from django.conf.urls.i18n import i18n_patterns
+from django.urls import path
from django.utils.translation import gettext_lazy as _
urlpatterns = i18n_patterns(
- url(_('translated/'), lambda x: x, name='i18n_prefixed'),
+ path(_('translated/'), lambda x: x, name='i18n_prefixed'),
)
diff --git a/tests/check_framework/urls/non_unique_namespaces.py b/tests/check_framework/urls/non_unique_namespaces.py
index 781be4c6d0..f036797cb7 100644
--- a/tests/check_framework/urls/non_unique_namespaces.py
+++ b/tests/check_framework/urls/non_unique_namespaces.py
@@ -1,13 +1,13 @@
-from django.conf.urls import include, url
+from django.urls import include, path
common_url_patterns = ([
- url(r'^app-ns1/', include([])),
- url(r'^app-url/', include([])),
+ path('app-ns1/', include([])),
+ path('app-url/', include([])),
], 'app-ns1')
urlpatterns = [
- url(r'^app-ns1-0/', include(common_url_patterns)),
- url(r'^app-ns1-1/', include(common_url_patterns)),
- url(r'^app-some-url/', include(([], 'app'), namespace='app-1')),
- url(r'^app-some-url-2/', include(([], 'app'), namespace='app-1'))
+ path('app-ns1-0/', include(common_url_patterns)),
+ path('app-ns1-1/', include(common_url_patterns)),
+ path('app-some-url/', include(([], 'app'), namespace='app-1')),
+ path('app-some-url-2/', include(([], 'app'), namespace='app-1'))
]
diff --git a/tests/check_framework/urls/unique_namespaces.py b/tests/check_framework/urls/unique_namespaces.py
index b3f7fd70d0..09296648fd 100644
--- a/tests/check_framework/urls/unique_namespaces.py
+++ b/tests/check_framework/urls/unique_namespaces.py
@@ -1,20 +1,20 @@
-from django.conf.urls import include, url
+from django.urls import include, path
common_url_patterns = ([
- url(r'^app-ns1/', include([])),
- url(r'^app-url/', include([])),
+ path('app-ns1/', include([])),
+ path('app-url/', include([])),
], 'common')
nested_url_patterns = ([
- url(r'^common/', include(common_url_patterns, namespace='nested')),
+ path('common/', include(common_url_patterns, namespace='nested')),
], 'nested')
urlpatterns = [
- url(r'^app-ns1-0/', include(common_url_patterns, namespace='app-include-1')),
- url(r'^app-ns1-1/', include(common_url_patterns, namespace='app-include-2')),
+ path('app-ns1-0/', include(common_url_patterns, namespace='app-include-1')),
+ path('app-ns1-1/', include(common_url_patterns, namespace='app-include-2')),
# 'nested' is included twice but namespaced by nested-1 and nested-2.
- url(r'^app-ns1-2/', include(nested_url_patterns, namespace='nested-1')),
- url(r'^app-ns1-3/', include(nested_url_patterns, namespace='nested-2')),
+ path('app-ns1-2/', include(nested_url_patterns, namespace='nested-1')),
+ path('app-ns1-3/', include(nested_url_patterns, namespace='nested-2')),
# namespaced URLs inside non-namespaced URLs.
- url(r'^app-ns1-4/', include([url(r'^abc/', include(common_url_patterns))])),
+ path('app-ns1-4/', include([path('abc/', include(common_url_patterns))])),
]
diff --git a/tests/check_framework/urls/warning_in_include.py b/tests/check_framework/urls/warning_in_include.py
index 5bb94c9688..8ec846be1e 100644
--- a/tests/check_framework/urls/warning_in_include.py
+++ b/tests/check_framework/urls/warning_in_include.py
@@ -1,7 +1,7 @@
-from django.conf.urls import include, url
+from django.urls import include, path, re_path
urlpatterns = [
- url(r'^', include([
- url(r'^include-with-dollar$', include([])),
+ path('', include([
+ re_path('^include-with-dollar$', include([])),
])),
]
diff --git a/tests/conditional_processing/urls.py b/tests/conditional_processing/urls.py
index 4b092a5ae1..48133d2f36 100644
--- a/tests/conditional_processing/urls.py
+++ b/tests/conditional_processing/urls.py
@@ -1,14 +1,14 @@
-from django.conf.urls import url
+from django.urls import path
from . import views
urlpatterns = [
- url('^condition/$', views.index),
- url('^condition/last_modified/$', views.last_modified_view1),
- url('^condition/last_modified2/$', views.last_modified_view2),
- url('^condition/etag/$', views.etag_view1),
- url('^condition/etag2/$', views.etag_view2),
- url('^condition/unquoted_etag/$', views.etag_view_unquoted),
- url('^condition/weak_etag/$', views.etag_view_weak),
- url('^condition/no_etag/$', views.etag_view_none),
+ path('condition/', views.index),
+ path('condition/last_modified/', views.last_modified_view1),
+ path('condition/last_modified2/', views.last_modified_view2),
+ path('condition/etag/', views.etag_view1),
+ path('condition/etag2/', views.etag_view2),
+ path('condition/unquoted_etag/', views.etag_view_unquoted),
+ path('condition/weak_etag/', views.etag_view_weak),
+ path('condition/no_etag/', views.etag_view_none),
]
diff --git a/tests/contenttypes_tests/urls.py b/tests/contenttypes_tests/urls.py
index 779e8c4a60..1403b00ac4 100644
--- a/tests/contenttypes_tests/urls.py
+++ b/tests/contenttypes_tests/urls.py
@@ -1,6 +1,6 @@
-from django.conf.urls import url
from django.contrib.contenttypes import views
+from django.urls import re_path
urlpatterns = [
- url(r'^shortcut/([0-9]+)/(.*)/$', views.shortcut),
+ re_path(r'^shortcut/([0-9]+)/(.*)/$', views.shortcut),
]
diff --git a/tests/context_processors/urls.py b/tests/context_processors/urls.py
index ac887f6613..b8297086a7 100644
--- a/tests/context_processors/urls.py
+++ b/tests/context_processors/urls.py
@@ -1,8 +1,8 @@
-from django.conf.urls import url
+from django.urls import path
from . import views
urlpatterns = [
- url(r'^request_attrs/$', views.request_processor),
- url(r'^debug/$', views.debug_processor),
+ path('request_attrs/', views.request_processor),
+ path('debug/', views.debug_processor),
]
diff --git a/tests/file_storage/urls.py b/tests/file_storage/urls.py
index 2bf659f6a8..24c5dcbc56 100644
--- a/tests/file_storage/urls.py
+++ b/tests/file_storage/urls.py
@@ -1,6 +1,6 @@
-from django.conf.urls import url
from django.http import HttpResponse
+from django.urls import path
urlpatterns = [
- url(r'^$', lambda req: HttpResponse('example view')),
+ path('', lambda req: HttpResponse('example view')),
]
diff --git a/tests/file_uploads/urls.py b/tests/file_uploads/urls.py
index 504554483e..3e7985d2f9 100644
--- a/tests/file_uploads/urls.py
+++ b/tests/file_uploads/urls.py
@@ -1,18 +1,18 @@
-from django.conf.urls import url
+from django.urls import path, re_path
from . import views
urlpatterns = [
- url(r'^upload/$', views.file_upload_view),
- url(r'^verify/$', views.file_upload_view_verify),
- url(r'^unicode_name/$', views.file_upload_unicode_name),
- url(r'^echo/$', views.file_upload_echo),
- url(r'^echo_content_type_extra/$', views.file_upload_content_type_extra),
- url(r'^echo_content/$', views.file_upload_echo_content),
- url(r'^quota/$', views.file_upload_quota),
- url(r'^quota/broken/$', views.file_upload_quota_broken),
- url(r'^getlist_count/$', views.file_upload_getlist_count),
- url(r'^upload_errors/$', views.file_upload_errors),
- url(r'^filename_case/$', views.file_upload_filename_case_view),
- url(r'^fd_closing/(?P<access>t|f)/$', views.file_upload_fd_closing),
+ path('upload/', views.file_upload_view),
+ path('verify/', views.file_upload_view_verify),
+ path('unicode_name/', views.file_upload_unicode_name),
+ path('echo/', views.file_upload_echo),
+ path('echo_content_type_extra/', views.file_upload_content_type_extra),
+ path('echo_content/', views.file_upload_echo_content),
+ path('quota/', views.file_upload_quota),
+ path('quota/broken/', views.file_upload_quota_broken),
+ path('getlist_count/', views.file_upload_getlist_count),
+ path('upload_errors/', views.file_upload_errors),
+ path('filename_case/', views.file_upload_filename_case_view),
+ re_path(r'^fd_closing/(?P<access>t|f)/$', views.file_upload_fd_closing),
]
diff --git a/tests/flatpages_tests/urls.py b/tests/flatpages_tests/urls.py
index 5b2c576b14..3b6806d2b2 100644
--- a/tests/flatpages_tests/urls.py
+++ b/tests/flatpages_tests/urls.py
@@ -1,13 +1,13 @@
-from django.conf.urls import include, url
from django.contrib.flatpages.sitemaps import FlatPageSitemap
from django.contrib.sitemaps import views
+from django.urls import include, path
-# special urls for flatpage test cases
urlpatterns = [
- url(r'^flatpages/sitemap\.xml$', views.sitemap,
+ path(
+ 'flatpages/sitemap.xml', views.sitemap,
{'sitemaps': {'flatpages': FlatPageSitemap}},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^flatpage_root', include('django.contrib.flatpages.urls')),
- url(r'^accounts/', include('django.contrib.auth.urls')),
+ path('flatpage_root', include('django.contrib.flatpages.urls')),
+ path('accounts/', include('django.contrib.auth.urls')),
]
diff --git a/tests/forms_tests/urls.py b/tests/forms_tests/urls.py
index ab7fa902a9..dda75b52b4 100644
--- a/tests/forms_tests/urls.py
+++ b/tests/forms_tests/urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
from .views import ArticleFormView
urlpatterns = [
- url(r'^model_form/(?P<pk>[0-9]+)/$', ArticleFormView.as_view(), name="article_form"),
+ path('model_form/<int:pk>/', ArticleFormView.as_view(), name='article_form'),
]
diff --git a/tests/generic_inline_admin/urls.py b/tests/generic_inline_admin/urls.py
index 59f09437db..8800a0cb92 100644
--- a/tests/generic_inline_admin/urls.py
+++ b/tests/generic_inline_admin/urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
from . import admin
urlpatterns = [
- url(r'^generic_inline_admin/admin/', admin.site.urls),
+ path('generic_inline_admin/admin/', admin.site.urls),
]
diff --git a/tests/gis_tests/geoadmin/urls.py b/tests/gis_tests/geoadmin/urls.py
index eb91d283d4..c27b1d7cda 100644
--- a/tests/gis_tests/geoadmin/urls.py
+++ b/tests/gis_tests/geoadmin/urls.py
@@ -1,6 +1,6 @@
-from django.conf.urls import include, url
from django.contrib import admin
+from django.urls import include, path
urlpatterns = [
- url(r'^admin/', include(admin.site.urls)),
+ path('admin/', include(admin.site.urls)),
]
diff --git a/tests/gis_tests/geoapp/urls.py b/tests/gis_tests/geoapp/urls.py
index 0e148bf4f3..9635d8ddbf 100644
--- a/tests/gis_tests/geoapp/urls.py
+++ b/tests/gis_tests/geoapp/urls.py
@@ -1,24 +1,26 @@
-from django.conf.urls import url
from django.contrib.gis import views as gis_views
from django.contrib.gis.sitemaps import views as gis_sitemap_views
from django.contrib.sitemaps import views as sitemap_views
+from django.urls import path
from .feeds import feed_dict
from .sitemaps import sitemaps
urlpatterns = [
- url(r'^feeds/(?P<url>.*)/$', gis_views.feed, {'feed_dict': feed_dict}),
+ path('feeds/<path:url>/', gis_views.feed, {'feed_dict': feed_dict}),
]
urlpatterns += [
- url(r'^sitemaps/(?P<section>\w+)\.xml$', sitemap_views.sitemap, {'sitemaps': sitemaps}),
+ path('sitemaps/<section>.xml', sitemap_views.sitemap, {'sitemaps': sitemaps}),
]
urlpatterns += [
- url(r'^sitemaps/kml/(?P<label>\w+)/(?P<model>\w+)/(?P<field_name>\w+)\.kml$',
+ path(
+ 'sitemaps/kml/<label>/<model>/<field_name>.kml',
gis_sitemap_views.kml,
name='django.contrib.gis.sitemaps.views.kml'),
- url(r'^sitemaps/kml/(?P<label>\w+)/(?P<model>\w+)/(?P<field_name>\w+)\.kmz$',
+ path(
+ 'sitemaps/kml/<label>/<<model>/<field_name>.kmz',
gis_sitemap_views.kmz,
name='django.contrib.gis.sitemaps.views.kmz'),
]
diff --git a/tests/handlers/tests_custom_error_handlers.py b/tests/handlers/tests_custom_error_handlers.py
index 3821783f79..30938bfb22 100644
--- a/tests/handlers/tests_custom_error_handlers.py
+++ b/tests/handlers/tests_custom_error_handlers.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
from django.core.exceptions import PermissionDenied
from django.template.response import TemplateResponse
from django.test import SimpleTestCase, modify_settings, override_settings
+from django.urls import path
class MiddlewareAccessingContent:
@@ -25,7 +25,7 @@ def permission_denied_view(request):
urlpatterns = [
- url(r'^$', permission_denied_view),
+ path('', permission_denied_view),
]
handler403 = template_response_error_handler
diff --git a/tests/handlers/urls.py b/tests/handlers/urls.py
index 015527ac51..b008395267 100644
--- a/tests/handlers/urls.py
+++ b/tests/handlers/urls.py
@@ -1,16 +1,15 @@
-from django.conf.urls import url
from django.urls import path
from . import views
urlpatterns = [
- url(r'^regular/$', views.regular),
+ path('regular/', views.regular),
path('no_response_fbv/', views.no_response),
path('no_response_cbv/', views.NoResponse()),
- url(r'^streaming/$', views.streaming),
- url(r'^in_transaction/$', views.in_transaction),
- url(r'^not_in_transaction/$', views.not_in_transaction),
- url(r'^suspicious/$', views.suspicious),
- url(r'^malformed_post/$', views.malformed_post),
- url(r'^httpstatus_enum/$', views.httpstatus_enum),
+ path('streaming/', views.streaming),
+ path('in_transaction/', views.in_transaction),
+ path('not_in_transaction/', views.not_in_transaction),
+ path('suspicious/', views.suspicious),
+ path('malformed_post/', views.malformed_post),
+ path('httpstatus_enum/', views.httpstatus_enum),
]
diff --git a/tests/i18n/patterns/urls/default.py b/tests/i18n/patterns/urls/default.py
index b7fc38cf89..b0c2f2585e 100644
--- a/tests/i18n/patterns/urls/default.py
+++ b/tests/i18n/patterns/urls/default.py
@@ -1,20 +1,20 @@
-from django.conf.urls import include, url
from django.conf.urls.i18n import i18n_patterns
+from django.urls import include, path, re_path
from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView
view = TemplateView.as_view(template_name='dummy.html')
urlpatterns = [
- url(r'^not-prefixed/$', view, name='not-prefixed'),
- url(r'^not-prefixed-include/', include('i18n.patterns.urls.included')),
- url(_(r'^translated/$'), view, name='no-prefix-translated'),
- url(_(r'^translated/(?P<slug>[\w-]+)/$'), view, name='no-prefix-translated-slug'),
+ path('not-prefixed/', view, name='not-prefixed'),
+ path('not-prefixed-include/', include('i18n.patterns.urls.included')),
+ re_path(_(r'^translated/$'), view, name='no-prefix-translated'),
+ re_path(_(r'^translated/(?P<slug>[\w-]+)/$'), view, name='no-prefix-translated-slug'),
]
urlpatterns += i18n_patterns(
- url(r'^prefixed/$', view, name='prefixed'),
- url(r'^prefixed\.xml$', view, name='prefixed_xml'),
- url(_(r'^users/$'), view, name='users'),
- url(_(r'^account/'), include('i18n.patterns.urls.namespace', namespace='account')),
+ path('prefixed/', view, name='prefixed'),
+ path('prefixed.xml', view, name='prefixed_xml'),
+ re_path(_(r'^users/$'), view, name='users'),
+ re_path(_(r'^account/'), include('i18n.patterns.urls.namespace', namespace='account')),
)
diff --git a/tests/i18n/patterns/urls/disabled.py b/tests/i18n/patterns/urls/disabled.py
index f5059dd852..48b0201fe3 100644
--- a/tests/i18n/patterns/urls/disabled.py
+++ b/tests/i18n/patterns/urls/disabled.py
@@ -1,9 +1,9 @@
-from django.conf.urls import url
from django.conf.urls.i18n import i18n_patterns
+from django.urls import path
from django.views.generic import TemplateView
view = TemplateView.as_view(template_name='dummy.html')
urlpatterns = i18n_patterns(
- url(r'^prefixed/$', view, name='prefixed'),
+ path('prefixed/', view, name='prefixed'),
)
diff --git a/tests/i18n/patterns/urls/included.py b/tests/i18n/patterns/urls/included.py
index ded29a8bf1..75658dc961 100644
--- a/tests/i18n/patterns/urls/included.py
+++ b/tests/i18n/patterns/urls/included.py
@@ -1,8 +1,8 @@
-from django.conf.urls import url
+from django.urls import path
from django.views.generic import TemplateView
view = TemplateView.as_view(template_name='dummy.html')
urlpatterns = [
- url(r'^foo/$', view, name='not-prefixed-included-url'),
+ path('foo/', view, name='not-prefixed-included-url'),
]
diff --git a/tests/i18n/patterns/urls/namespace.py b/tests/i18n/patterns/urls/namespace.py
index 9858c8cd5e..19cd5694da 100644
--- a/tests/i18n/patterns/urls/namespace.py
+++ b/tests/i18n/patterns/urls/namespace.py
@@ -1,5 +1,4 @@
-from django.conf.urls import url
-from django.urls import path
+from django.urls import path, re_path
from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView
@@ -7,7 +6,7 @@ view = TemplateView.as_view(template_name='dummy.html')
app_name = 'account'
urlpatterns = [
- url(_(r'^register/$'), view, name='register'),
- url(_(r'^register-without-slash$'), view, name='register-without-slash'),
+ re_path(_(r'^register/$'), view, name='register'),
+ re_path(_(r'^register-without-slash$'), view, name='register-without-slash'),
path(_('register-as-path/'), view, name='register-as-path'),
]
diff --git a/tests/i18n/patterns/urls/path_unused.py b/tests/i18n/patterns/urls/path_unused.py
index e2186d3d02..2784d286a1 100644
--- a/tests/i18n/patterns/urls/path_unused.py
+++ b/tests/i18n/patterns/urls/path_unused.py
@@ -1,8 +1,8 @@
-from django.conf.urls import url
+from django.urls import re_path
from django.views.generic import TemplateView
view = TemplateView.as_view(template_name='dummy.html')
urlpatterns = [
- url(r'^nl/foo/', view, name='not-translated'),
+ re_path('^nl/foo/', view, name='not-translated'),
]
diff --git a/tests/i18n/patterns/urls/wrong.py b/tests/i18n/patterns/urls/wrong.py
index 99504dbb87..46b4b69718 100644
--- a/tests/i18n/patterns/urls/wrong.py
+++ b/tests/i18n/patterns/urls/wrong.py
@@ -1,7 +1,7 @@
-from django.conf.urls import include, url
from django.conf.urls.i18n import i18n_patterns
+from django.urls import include, re_path
from django.utils.translation import gettext_lazy as _
urlpatterns = i18n_patterns(
- url(_(r'^account/'), include('i18n.patterns.urls.wrong_namespace', namespace='account')),
+ re_path(_(r'^account/'), include('i18n.patterns.urls.wrong_namespace', namespace='account')),
)
diff --git a/tests/i18n/patterns/urls/wrong_namespace.py b/tests/i18n/patterns/urls/wrong_namespace.py
index f36c1a88a2..7800d90e3c 100644
--- a/tests/i18n/patterns/urls/wrong_namespace.py
+++ b/tests/i18n/patterns/urls/wrong_namespace.py
@@ -1,5 +1,5 @@
-from django.conf.urls import url
from django.conf.urls.i18n import i18n_patterns
+from django.urls import re_path
from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView
@@ -7,5 +7,5 @@ view = TemplateView.as_view(template_name='dummy.html')
app_name = 'account'
urlpatterns = i18n_patterns(
- url(_(r'^register/$'), view, name='register'),
+ re_path(_(r'^register/$'), view, name='register'),
)
diff --git a/tests/i18n/urls.py b/tests/i18n/urls.py
index 233ad699a3..6a1dd75e24 100644
--- a/tests/i18n/urls.py
+++ b/tests/i18n/urls.py
@@ -1,9 +1,9 @@
-from django.conf.urls import url
from django.conf.urls.i18n import i18n_patterns
from django.http import HttpResponse, StreamingHttpResponse
+from django.urls import path
from django.utils.translation import gettext_lazy as _
urlpatterns = i18n_patterns(
- url(r'^simple/$', lambda r: HttpResponse()),
- url(r'^streaming/$', lambda r: StreamingHttpResponse([_("Yes"), "/", _("No")])),
+ path('simple/', lambda r: HttpResponse()),
+ path('streaming/', lambda r: StreamingHttpResponse([_('Yes'), '/', _('No')])),
)
diff --git a/tests/i18n/urls_default_unprefixed.py b/tests/i18n/urls_default_unprefixed.py
index 9f0e6f3902..8801d078f4 100644
--- a/tests/i18n/urls_default_unprefixed.py
+++ b/tests/i18n/urls_default_unprefixed.py
@@ -1,11 +1,11 @@
-from django.conf.urls import url
from django.conf.urls.i18n import i18n_patterns
from django.http import HttpResponse
+from django.urls import path, re_path
from django.utils.translation import gettext_lazy as _
urlpatterns = i18n_patterns(
- url(r'^(?P<arg>[\w-]+)-page', lambda request, **arg: HttpResponse(_("Yes"))),
- url(r'^simple/$', lambda r: HttpResponse(_("Yes"))),
- url(r'^(.+)/(.+)/$', lambda *args: HttpResponse()),
+ re_path(r'^(?P<arg>[\w-]+)-page', lambda request, **arg: HttpResponse(_('Yes'))),
+ path('simple/', lambda r: HttpResponse(_('Yes'))),
+ re_path(r'^(.+)/(.+)/$', lambda *args: HttpResponse()),
prefix_default_language=False,
)
diff --git a/tests/logging_tests/urls.py b/tests/logging_tests/urls.py
index d5cdb7c17d..65d8187cb9 100644
--- a/tests/logging_tests/urls.py
+++ b/tests/logging_tests/urls.py
@@ -1,13 +1,12 @@
-from django.conf.urls import url
from django.urls import path
from . import views
urlpatterns = [
- url(r'^innocent/$', views.innocent),
+ path('innocent/', views.innocent),
path('redirect/', views.redirect),
- url(r'^suspicious/$', views.suspicious),
- url(r'^suspicious_spec/$', views.suspicious_spec),
+ path('suspicious/', views.suspicious),
+ path('suspicious_spec/', views.suspicious_spec),
path('internal_server_error/', views.internal_server_error),
path('uncaught_exception/', views.uncaught_exception),
path('permission_denied/', views.permission_denied),
diff --git a/tests/logging_tests/urls_i18n.py b/tests/logging_tests/urls_i18n.py
index 220f5e4732..31157819c4 100644
--- a/tests/logging_tests/urls_i18n.py
+++ b/tests/logging_tests/urls_i18n.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
from django.conf.urls.i18n import i18n_patterns
from django.http import HttpResponse
+from django.urls import path
urlpatterns = i18n_patterns(
- url(r'^exists/$', lambda r: HttpResponse()),
+ path('exists/', lambda r: HttpResponse()),
)
diff --git a/tests/messages_tests/urls.py b/tests/messages_tests/urls.py
index d9a8a59b91..433a249bb8 100644
--- a/tests/messages_tests/urls.py
+++ b/tests/messages_tests/urls.py
@@ -1,11 +1,10 @@
from django import forms
-from django.conf.urls import url
from django.contrib import messages
from django.contrib.messages.views import SuccessMessageMixin
from django.http import HttpResponse, HttpResponseRedirect
from django.template import engines
from django.template.response import TemplateResponse
-from django.urls import reverse
+from django.urls import path, re_path, reverse
from django.views.decorators.cache import never_cache
from django.views.generic.edit import FormView
@@ -65,10 +64,12 @@ class ContactFormViewWithMsg(SuccessMessageMixin, FormView):
urlpatterns = [
- url('^add/(debug|info|success|warning|error)/$', add, name='add_message'),
- url('^add/msg/$', ContactFormViewWithMsg.as_view(), name='add_success_msg'),
- url('^show/$', show, name='show_message'),
- url('^template_response/add/(debug|info|success|warning|error)/$',
- add_template_response, name='add_template_response'),
- url('^template_response/show/$', show_template_response, name='show_template_response'),
+ re_path('^add/(debug|info|success|warning|error)/$', add, name='add_message'),
+ path('add/msg/', ContactFormViewWithMsg.as_view(), name='add_success_msg'),
+ path('show/', show, name='show_message'),
+ re_path(
+ '^template_response/add/(debug|info|success|warning|error)/$',
+ add_template_response, name='add_template_response',
+ ),
+ path('template_response/show/', show_template_response, name='show_template_response'),
]
diff --git a/tests/middleware/cond_get_urls.py b/tests/middleware/cond_get_urls.py
index a100cfdafb..8de6bdce0a 100644
--- a/tests/middleware/cond_get_urls.py
+++ b/tests/middleware/cond_get_urls.py
@@ -1,6 +1,6 @@
-from django.conf.urls import url
from django.http import HttpResponse
+from django.urls import path
urlpatterns = [
- url(r'^$', lambda request: HttpResponse('root is here')),
+ path('', lambda request: HttpResponse('root is here')),
]
diff --git a/tests/middleware/extra_urls.py b/tests/middleware/extra_urls.py
index 20ded19c62..4a4289a95d 100644
--- a/tests/middleware/extra_urls.py
+++ b/tests/middleware/extra_urls.py
@@ -1,9 +1,9 @@
-from django.conf.urls import url
+from django.urls import path
from . import views
urlpatterns = [
- url(r'^customurlconf/noslash$', views.empty_view),
- url(r'^customurlconf/slash/$', views.empty_view),
- url(r'^customurlconf/needsquoting#/$', views.empty_view),
+ path('customurlconf/noslash', views.empty_view),
+ path('customurlconf/slash/', views.empty_view),
+ path('customurlconf/needsquoting#/', views.empty_view),
]
diff --git a/tests/middleware/urls.py b/tests/middleware/urls.py
index d623e7d6af..8411d87b5a 100644
--- a/tests/middleware/urls.py
+++ b/tests/middleware/urls.py
@@ -1,11 +1,11 @@
-from django.conf.urls import url
+from django.urls import path, re_path
from . import views
urlpatterns = [
- url(r'^noslash$', views.empty_view),
- url(r'^slash/$', views.empty_view),
- url(r'^needsquoting#/$', views.empty_view),
+ path('noslash', views.empty_view),
+ path('slash/', views.empty_view),
+ path('needsquoting#/', views.empty_view),
# Accepts paths with two leading slashes.
- url(r'^(.+)/security/$', views.empty_view),
+ re_path(r'^(.+)/security/$', views.empty_view),
]
diff --git a/tests/middleware_exceptions/urls.py b/tests/middleware_exceptions/urls.py
index 5a77ac6123..46332916b6 100644
--- a/tests/middleware_exceptions/urls.py
+++ b/tests/middleware_exceptions/urls.py
@@ -1,11 +1,11 @@
-from django.conf.urls import url
+from django.urls import path
from . import views
urlpatterns = [
- url(r'^middleware_exceptions/view/$', views.normal_view),
- url(r'^middleware_exceptions/error/$', views.server_error),
- url(r'^middleware_exceptions/permission_denied/$', views.permission_denied),
- url(r'^middleware_exceptions/exception_in_render/$', views.exception_in_render),
- url(r'^middleware_exceptions/template_response/$', views.template_response),
+ path('middleware_exceptions/view/', views.normal_view),
+ path('middleware_exceptions/error/', views.server_error),
+ path('middleware_exceptions/permission_denied/', views.permission_denied),
+ path('middleware_exceptions/exception_in_render/', views.exception_in_render),
+ path('middleware_exceptions/template_response/', views.template_response),
]
diff --git a/tests/project_template/urls.py b/tests/project_template/urls.py
index db0e9bb42e..5a368ecef7 100644
--- a/tests/project_template/urls.py
+++ b/tests/project_template/urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
from . import views
urlpatterns = [
- url(r'^empty/$', views.empty_view),
+ path('empty/', views.empty_view),
]
diff --git a/tests/proxy_models/urls.py b/tests/proxy_models/urls.py
index 18ade2e739..13910ef999 100644
--- a/tests/proxy_models/urls.py
+++ b/tests/proxy_models/urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
from .admin import site
urlpatterns = [
- url(r'^admin/', site.urls),
+ path('admin/', site.urls),
]
diff --git a/tests/redirects_tests/urls.py b/tests/redirects_tests/urls.py
index 965f0b8bfa..b29f8f5a03 100644
--- a/tests/redirects_tests/urls.py
+++ b/tests/redirects_tests/urls.py
@@ -1,6 +1,6 @@
-from django.conf.urls import url
from django.http import HttpResponse
+from django.urls import path
urlpatterns = [
- url(r'^$', lambda req: HttpResponse('OK')),
+ path('', lambda req: HttpResponse('OK')),
]
diff --git a/tests/resolve_url/urls.py b/tests/resolve_url/urls.py
index 43429d6f2a..58797dbb71 100644
--- a/tests/resolve_url/urls.py
+++ b/tests/resolve_url/urls.py
@@ -1,4 +1,4 @@
-from django.conf.urls import url
+from django.urls import path
def some_view(request):
@@ -6,5 +6,5 @@ def some_view(request):
urlpatterns = [
- url(r'^some-url/$', some_view, name='some-view'),
+ path('some-url/', some_view, name='some-view'),
]
diff --git a/tests/servers/urls.py b/tests/servers/urls.py
index 0a8a2984aa..d07712776a 100644
--- a/tests/servers/urls.py
+++ b/tests/servers/urls.py
@@ -1,15 +1,15 @@
-from django.conf.urls import url
+from django.urls import path
from . import views
urlpatterns = [
- url(r'^example_view/$', views.example_view),
- url(r'^streaming_example_view/$', views.streaming_example_view),
- url(r'^model_view/$', views.model_view),
- url(r'^create_model_instance/$', views.create_model_instance),
- url(r'^environ_view/$', views.environ_view),
- url(r'^subview_calling_view/$', views.subview_calling_view),
- url(r'^subview/$', views.subview),
- url(r'^check_model_instance_from_subview/$', views.check_model_instance_from_subview),
- url(r'^method_view/$', views.method_view),
+ path('example_view/', views.example_view),
+ path('streaming_example_view/', views.streaming_example_view),
+ path('model_view/', views.model_view),
+ path('create_model_instance/', views.create_model_instance),
+ path('environ_view/', views.environ_view),
+ path('subview_calling_view/', views.subview_calling_view),
+ path('subview/', views.subview),
+ path('check_model_instance_from_subview/', views.check_model_instance_from_subview),
+ path('method_view/', views.method_view),
]
diff --git a/tests/shortcuts/urls.py b/tests/shortcuts/urls.py
index e24ee9314c..0ac994b7d3 100644
--- a/tests/shortcuts/urls.py
+++ b/tests/shortcuts/urls.py
@@ -1,16 +1,16 @@
-from django.conf.urls import url
+from django.urls import path
from . import views
urlpatterns = [
- url(r'^render_to_response/$', views.render_to_response_view),
- url(r'^render_to_response/multiple_templates/$', views.render_to_response_view_with_multiple_templates),
- url(r'^render_to_response/content_type/$', views.render_to_response_view_with_content_type),
- url(r'^render_to_response/status/$', views.render_to_response_view_with_status),
- url(r'^render_to_response/using/$', views.render_to_response_view_with_using),
- url(r'^render/$', views.render_view),
- url(r'^render/multiple_templates/$', views.render_view_with_multiple_templates),
- url(r'^render/content_type/$', views.render_view_with_content_type),
- url(r'^render/status/$', views.render_view_with_status),
- url(r'^render/using/$', views.render_view_with_using),
+ path('render_to_response/', views.render_to_response_view),
+ path('render_to_response/multiple_templates/', views.render_to_response_view_with_multiple_templates),
+ path('render_to_response/content_type/', views.render_to_response_view_with_content_type),
+ path('render_to_response/status/', views.render_to_response_view_with_status),
+ path('render_to_response/using/', views.render_to_response_view_with_using),
+ path('render/', views.render_view),
+ path('render/multiple_templates/', views.render_view_with_multiple_templates),
+ path('render/content_type/', views.render_view_with_content_type),
+ path('render/status/', views.render_view_with_status),
+ path('render/using/', views.render_view_with_using),
]
diff --git a/tests/sitemaps_tests/urls/http.py b/tests/sitemaps_tests/urls/http.py
index 66e05301f5..03652902fb 100644
--- a/tests/sitemaps_tests/urls/http.py
+++ b/tests/sitemaps_tests/urls/http.py
@@ -1,10 +1,10 @@
from collections import OrderedDict
from datetime import date, datetime
-from django.conf.urls import url
from django.conf.urls.i18n import i18n_patterns
from django.contrib.sitemaps import GenericSitemap, Sitemap, views
from django.http import HttpResponse
+from django.urls import path
from django.utils import timezone
from django.views.decorators.cache import cache_page
@@ -136,64 +136,83 @@ generic_sitemaps_lastmod = {
}
urlpatterns = [
- url(r'^simple/index\.xml$', views.index, {'sitemaps': simple_sitemaps}),
- url(r'^simple-paged/index\.xml$', views.index, {'sitemaps': simple_sitemaps_paged}),
- url(r'^simple-not-callable/index\.xml$', views.index, {'sitemaps': simple_sitemaps_not_callable}),
- url(r'^simple/custom-index\.xml$', views.index,
+ path('simple/index.xml', views.index, {'sitemaps': simple_sitemaps}),
+ path('simple-paged/index.xml', views.index, {'sitemaps': simple_sitemaps_paged}),
+ path('simple-not-callable/index.xml', views.index, {'sitemaps': simple_sitemaps_not_callable}),
+ path(
+ 'simple/custom-index.xml', views.index,
{'sitemaps': simple_sitemaps, 'template_name': 'custom_sitemap_index.xml'}),
- url(r'^simple/sitemap-(?P<section>.+)\.xml$', views.sitemap,
+ path(
+ 'simple/sitemap-<section>.xml', views.sitemap,
{'sitemaps': simple_sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^simple/sitemap\.xml$', views.sitemap,
+ path(
+ 'simple/sitemap.xml', views.sitemap,
{'sitemaps': simple_sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^simple/i18n\.xml$', views.sitemap,
+ path(
+ 'simple/i18n.xml', views.sitemap,
{'sitemaps': simple_i18nsitemaps},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^simple/custom-sitemap\.xml$', views.sitemap,
+ path(
+ 'simple/custom-sitemap.xml', views.sitemap,
{'sitemaps': simple_sitemaps, 'template_name': 'custom_sitemap.xml'},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^empty/sitemap\.xml$', views.sitemap,
+ path(
+ 'empty/sitemap.xml', views.sitemap,
{'sitemaps': empty_sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^lastmod/sitemap\.xml$', views.sitemap,
+ path(
+ 'lastmod/sitemap.xml', views.sitemap,
{'sitemaps': fixed_lastmod_sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^lastmod-mixed/sitemap\.xml$', views.sitemap,
+ path(
+ 'lastmod-mixed/sitemap.xml', views.sitemap,
{'sitemaps': fixed_lastmod__mixed_sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^lastmod/date-sitemap\.xml$', views.sitemap,
+ path(
+ 'lastmod/date-sitemap.xml', views.sitemap,
{'sitemaps': {'date-sitemap': DateSiteMap}},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^lastmod/tz-sitemap\.xml$', views.sitemap,
+ path(
+ 'lastmod/tz-sitemap.xml', views.sitemap,
{'sitemaps': {'tz-sitemap': TimezoneSiteMap}},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^lastmod-sitemaps/mixed-ascending.xml$', views.sitemap,
+ path(
+ 'lastmod-sitemaps/mixed-ascending.xml', views.sitemap,
{'sitemaps': sitemaps_lastmod_mixed_ascending},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^lastmod-sitemaps/mixed-descending.xml$', views.sitemap,
+ path(
+ 'lastmod-sitemaps/mixed-descending.xml', views.sitemap,
{'sitemaps': sitemaps_lastmod_mixed_descending},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^lastmod-sitemaps/ascending.xml$', views.sitemap,
+ path(
+ 'lastmod-sitemaps/ascending.xml', views.sitemap,
{'sitemaps': sitemaps_lastmod_ascending},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^lastmod-sitemaps/descending.xml$', views.sitemap,
+ path(
+ 'lastmod-sitemaps/descending.xml', views.sitemap,
{'sitemaps': sitemaps_lastmod_descending},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^generic/sitemap\.xml$', views.sitemap,
+ path(
+ 'generic/sitemap.xml', views.sitemap,
{'sitemaps': generic_sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^generic-lastmod/sitemap\.xml$', views.sitemap,
+ path(
+ 'generic-lastmod/sitemap.xml', views.sitemap,
{'sitemaps': generic_sitemaps_lastmod},
name='django.contrib.sitemaps.views.sitemap'),
- url(r'^cached/index\.xml$', cache_page(1)(views.index),
+ path(
+ 'cached/index.xml', cache_page(1)(views.index),
{'sitemaps': simple_sitemaps, 'sitemap_url_name': 'cached_sitemap'}),
- url(r'^cached/sitemap-(?P<section>.+)\.xml', cache_page(1)(views.sitemap),
+ path(
+ 'cached/sitemap-<section>.xml', cache_page(1)(views.sitemap),
{'sitemaps': simple_sitemaps}, name='cached_sitemap'),
- url(r'^sitemap-without-entries/sitemap\.xml$', views.sitemap,
+ path(
+ 'sitemap-without-entries/sitemap.xml', views.sitemap,
{'sitemaps': {}}, name='django.contrib.sitemaps.views.sitemap'),
]
urlpatterns += i18n_patterns(
- url(r'^i18n/testmodel/(?P<id>\d+)/$', testmodelview, name='i18n_testmodel'),
+ path('i18n/testmodel/<int:id>/', testmodelview, name='i18n_testmodel'),
)
diff --git a/tests/sitemaps_tests/urls/https.py b/tests/sitemaps_tests/urls/https.py
index 4f07d4759c..191fb5163e 100644
--- a/tests/sitemaps_tests/urls/https.py
+++ b/tests/sitemaps_tests/urls/https.py
@@ -1,5 +1,5 @@
-from django.conf.urls import url
from django.contrib.sitemaps import views
+from django.urls import path
from .http import SimpleSitemap
@@ -13,8 +13,9 @@ secure_sitemaps = {
}
urlpatterns = [
- url(r'^secure/index\.xml$', views.index, {'sitemaps': secure_sitemaps}),
- url(r'^secure/sitemap-(?P<section>.+)\.xml$', views.sitemap,
+ path('secure/index.xml', views.index, {'sitemaps': secure_sitemaps}),
+ path(
+ 'secure/sitemap-<section>.xml', views.sitemap,
{'sitemaps': secure_sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
]
diff --git a/tests/sitemaps_tests/urls/index_only.py b/tests/sitemaps_tests/urls/index_only.py
index 7b9a093d87..6f8f8e162e 100644
--- a/tests/sitemaps_tests/urls/index_only.py
+++ b/tests/sitemaps_tests/urls/index_only.py
@@ -1,9 +1,10 @@
-from django.conf.urls import url
from django.contrib.sitemaps import views
+from django.urls import path
from .http import simple_sitemaps
urlpatterns = [
- url(r'^simple/index\.xml$', views.index, {'sitemaps': simple_sitemaps},
+ path(
+ 'simple/index.xml', views.index, {'sitemaps': simple_sitemaps},
name='django.contrib.sitemaps.views.index'),
]
diff --git a/tests/staticfiles_tests/urls/default.py b/tests/staticfiles_tests/urls/default.py
index 5931ebc3be..7d45483131 100644
--- a/tests/staticfiles_tests/urls/default.py
+++ b/tests/staticfiles_tests/urls/default.py
@@ -1,6 +1,6 @@
-from django.conf.urls import url
from django.contrib.staticfiles import views
+from django.urls import re_path
urlpatterns = [
- url(r'^static/(?P<path>.*)$', views.serve),
+ re_path('^static/(?P<path>.*)$', views.serve),
]
diff --git a/tests/syndication_tests/urls.py b/tests/syndication_tests/urls.py
index 09f7e789cd..d23c33e21b 100644
--- a/tests/syndication_tests/urls.py
+++ b/tests/syndication_tests/urls.py
@@ -1,26 +1,28 @@
-from django.conf.urls import url
+from django.urls import path
from . import feeds
urlpatterns = [
- url(r'^syndication/rss2/$', feeds.TestRss2Feed()),
- url(r'^syndication/rss2/guid_ispermalink_true/$',
+ path('syndication/rss2/', feeds.TestRss2Feed()),
+ path(
+ 'syndication/rss2/guid_ispermalink_true/',
feeds.TestRss2FeedWithGuidIsPermaLinkTrue()),
- url(r'^syndication/rss2/guid_ispermalink_false/$',
+ path(
+ 'syndication/rss2/guid_ispermalink_false/',
feeds.TestRss2FeedWithGuidIsPermaLinkFalse()),
- url(r'^syndication/rss091/$', feeds.TestRss091Feed()),
- url(r'^syndication/no_pubdate/$', feeds.TestNoPubdateFeed()),
- url(r'^syndication/atom/$', feeds.TestAtomFeed()),
- url(r'^syndication/latest/$', feeds.TestLatestFeed()),
- url(r'^syndication/custom/$', feeds.TestCustomFeed()),
- url(r'^syndication/naive-dates/$', feeds.NaiveDatesFeed()),
- url(r'^syndication/aware-dates/$', feeds.TZAwareDatesFeed()),
- url(r'^syndication/feedurl/$', feeds.TestFeedUrlFeed()),
- url(r'^syndication/articles/$', feeds.ArticlesFeed()),
- url(r'^syndication/template/$', feeds.TemplateFeed()),
- url(r'^syndication/template_context/$', feeds.TemplateContextFeed()),
- url(r'^syndication/rss2/single-enclosure/$', feeds.TestSingleEnclosureRSSFeed()),
- url(r'^syndication/rss2/multiple-enclosure/$', feeds.TestMultipleEnclosureRSSFeed()),
- url(r'^syndication/atom/single-enclosure/$', feeds.TestSingleEnclosureAtomFeed()),
- url(r'^syndication/atom/multiple-enclosure/$', feeds.TestMultipleEnclosureAtomFeed()),
+ path('syndication/rss091/', feeds.TestRss091Feed()),
+ path('syndication/no_pubdate/', feeds.TestNoPubdateFeed()),
+ path('syndication/atom/', feeds.TestAtomFeed()),
+ path('syndication/latest/', feeds.TestLatestFeed()),
+ path('syndication/custom/', feeds.TestCustomFeed()),
+ path('syndication/naive-dates/', feeds.NaiveDatesFeed()),
+ path('syndication/aware-dates/', feeds.TZAwareDatesFeed()),
+ path('syndication/feedurl/', feeds.TestFeedUrlFeed()),
+ path('syndication/articles/', feeds.ArticlesFeed()),
+ path('syndication/template/', feeds.TemplateFeed()),
+ path('syndication/template_context/', feeds.TemplateContextFeed()),
+ path('syndication/rss2/single-enclosure/', feeds.TestSingleEnclosureRSSFeed()),
+ path('syndication/rss2/multiple-enclosure/', feeds.TestMultipleEnclosureRSSFeed()),
+ path('syndication/atom/single-enclosure/', feeds.TestSingleEnclosureAtomFeed()),
+ path('syndication/atom/multiple-enclosure/', feeds.TestMultipleEnclosureAtomFeed()),
]
diff --git a/tests/template_tests/alternate_urls.py b/tests/template_tests/alternate_urls.py
index cb73513879..181e5c50a5 100644
--- a/tests/template_tests/alternate_urls.py
+++ b/tests/template_tests/alternate_urls.py
@@ -1,11 +1,11 @@
-from django.conf.urls import url
+from django.urls import path
from . import views
urlpatterns = [
# View returning a template response
- url(r'^template_response_view/$', views.template_response_view),
+ path('template_response_view/', views.template_response_view),
# A view that can be hard to find...
- url(r'^snark/', views.snark, name='snark'),
+ path('snark/', views.snark, name='snark'),
]
diff --git a/tests/template_tests/urls.py b/tests/template_tests/urls.py
index a367696d43..c9d6900baf 100644
--- a/tests/template_tests/urls.py
+++ b/tests/template_tests/urls.py
@@ -1,23 +1,23 @@
-from django.conf.urls import include, url
+from django.urls import include, path, re_path
from . import views
ns_patterns = [
# Test urls for testing reverse lookups
- url(r'^$', views.index, name='index'),
- url(r'^client/([0-9,]+)/$', views.client, name='client'),
- url(r'^client/(?P<id>[0-9]+)/(?P<action>[^/]+)/$', views.client_action, name='client_action'),
- url(r'^client/(?P<client_id>[0-9]+)/(?P<action>[^/]+)/$', views.client_action, name='client_action'),
- url(r'^named-client/([0-9]+)/$', views.client2, name="named.client"),
+ path('', views.index, name='index'),
+ re_path(r'^client/([0-9,]+)/$', views.client, name='client'),
+ re_path(r'^client/(?P<id>[0-9]+)/(?P<action>[^/]+)/$', views.client_action, name='client_action'),
+ re_path(r'^client/(?P<client_id>[0-9]+)/(?P<action>[^/]+)/$', views.client_action, name='client_action'),
+ re_path(r'^named-client/([0-9]+)/$', views.client2, name="named.client"),
]
urlpatterns = ns_patterns + [
# Unicode strings are permitted everywhere.
- url(r'^Юникод/(\w+)/$', views.client2, name="метка_оператора"),
- url(r'^Юникод/(?P<tag>\S+)/$', views.client2, name="метка_оператора_2"),
+ re_path(r'^Юникод/(\w+)/$', views.client2, name="метка_оператора"),
+ re_path(r'^Юникод/(?P<tag>\S+)/$', views.client2, name="метка_оператора_2"),
# Test urls for namespaces and current_app
- url(r'ns1/', include((ns_patterns, 'app'), 'ns1')),
- url(r'ns2/', include((ns_patterns, 'app'))),
+ path('ns1/', include((ns_patterns, 'app'), 'ns1')),
+ path('ns2/', include((ns_patterns, 'app'))),
]
diff --git a/tests/test_client/urls.py b/tests/test_client/urls.py
index 9d1d8f49e1..61cbe00547 100644
--- a/tests/test_client/urls.py
+++ b/tests/test_client/urls.py
@@ -1,47 +1,47 @@
-from django.conf.urls import url
from django.contrib.auth import views as auth_views
+from django.urls import path
from django.views.generic import RedirectView
from . import views
urlpatterns = [
- url(r'^upload_view/$', views.upload_view, name='upload_view'),
- url(r'^get_view/$', views.get_view, name='get_view'),
- url(r'^post_view/$', views.post_view),
- url(r'^put_view/$', views.put_view),
- url(r'^trace_view/$', views.trace_view),
- url(r'^header_view/$', views.view_with_header),
- url(r'^raw_post_view/$', views.raw_post_view),
- url(r'^redirect_view/$', views.redirect_view),
- url(r'^redirect_view_307/$', views.method_saving_307_redirect_view),
- url(r'^redirect_view_308/$', views.method_saving_308_redirect_view),
- url(r'^secure_view/$', views.view_with_secure),
- url(r'^permanent_redirect_view/$', RedirectView.as_view(url='/get_view/', permanent=True)),
- url(r'^temporary_redirect_view/$', RedirectView.as_view(url='/get_view/', permanent=False)),
- url(r'^http_redirect_view/$', RedirectView.as_view(url='/secure_view/')),
- url(r'^https_redirect_view/$', RedirectView.as_view(url='https://testserver/secure_view/')),
- url(r'^double_redirect_view/$', views.double_redirect_view),
- url(r'^bad_view/$', views.bad_view),
- url(r'^form_view/$', views.form_view),
- url(r'^form_view_with_template/$', views.form_view_with_template),
- url(r'^formset_view/$', views.formset_view),
- url(r'^json_view/$', views.json_view),
- url(r'^login_protected_view/$', views.login_protected_view),
- url(r'^login_protected_method_view/$', views.login_protected_method_view),
- url(r'^login_protected_view_custom_redirect/$', views.login_protected_view_changed_redirect),
- url(r'^permission_protected_view/$', views.permission_protected_view),
- url(r'^permission_protected_view_exception/$', views.permission_protected_view_exception),
- url(r'^permission_protected_method_view/$', views.permission_protected_method_view),
- url(r'^session_view/$', views.session_view),
- url(r'^broken_view/$', views.broken_view),
- url(r'^mail_sending_view/$', views.mail_sending_view),
- url(r'^mass_mail_sending_view/$', views.mass_mail_sending_view),
- url(r'^nesting_exception_view/$', views.nesting_exception_view),
- url(r'^django_project_redirect/$', views.django_project_redirect),
- url(r'^two_arg_exception/$', views.two_arg_exception),
+ path('upload_view/', views.upload_view, name='upload_view'),
+ path('get_view/', views.get_view, name='get_view'),
+ path('post_view/', views.post_view),
+ path('put_view/', views.put_view),
+ path('trace_view/', views.trace_view),
+ path('header_view/', views.view_with_header),
+ path('raw_post_view/', views.raw_post_view),
+ path('redirect_view/', views.redirect_view),
+ path('redirect_view_307/', views.method_saving_307_redirect_view),
+ path('redirect_view_308/', views.method_saving_308_redirect_view),
+ path('secure_view/', views.view_with_secure),
+ path('permanent_redirect_view/', RedirectView.as_view(url='/get_view/', permanent=True)),
+ path('temporary_redirect_view/', RedirectView.as_view(url='/get_view/', permanent=False)),
+ path('http_redirect_view/', RedirectView.as_view(url='/secure_view/')),
+ path('https_redirect_view/', RedirectView.as_view(url='https://testserver/secure_view/')),
+ path('double_redirect_view/', views.double_redirect_view),
+ path('bad_view/', views.bad_view),
+ path('form_view/', views.form_view),
+ path('form_view_with_template/', views.form_view_with_template),
+ path('formset_view/', views.formset_view),
+ path('json_view/', views.json_view),
+ path('login_protected_view/', views.login_protected_view),
+ path('login_protected_method_view/', views.login_protected_method_view),
+ path('login_protected_view_custom_redirect/', views.login_protected_view_changed_redirect),
+ path('permission_protected_view/', views.permission_protected_view),
+ path('permission_protected_view_exception/', views.permission_protected_view_exception),
+ path('permission_protected_method_view/', views.permission_protected_method_view),
+ path('session_view/', views.session_view),
+ path('broken_view/', views.broken_view),
+ path('mail_sending_view/', views.mail_sending_view),
+ path('mass_mail_sending_view/', views.mass_mail_sending_view),
+ path('nesting_exception_view/', views.nesting_exception_view),
+ path('django_project_redirect/', views.django_project_redirect),
+ path('two_arg_exception/', views.two_arg_exception),
- url(r'^accounts/$', RedirectView.as_view(url='login/')),
- url(r'^accounts/no_trailing_slash$', RedirectView.as_view(url='login/')),
- url(r'^accounts/login/$', auth_views.LoginView.as_view(template_name='login.html')),
- url(r'^accounts/logout/$', auth_views.LogoutView.as_view()),
+ path('accounts/', RedirectView.as_view(url='login/')),
+ path('accounts/no_trailing_slash', RedirectView.as_view(url='login/')),
+ path('accounts/login/', auth_views.LoginView.as_view(template_name='login.html')),
+ path('accounts/logout/', auth_views.LogoutView.as_view()),
]
diff --git a/tests/test_client_regress/urls.py b/tests/test_client_regress/urls.py
index eeec49b8ce..18c037bc23 100644
--- a/tests/test_client_regress/urls.py
+++ b/tests/test_client_regress/urls.py
@@ -1,42 +1,42 @@
-from django.conf.urls import include, url
+from django.urls import include, path
from django.views.generic import RedirectView
from . import views
urlpatterns = [
- url(r'', include('test_client.urls')),
+ path('', include('test_client.urls')),
- url(r'^no_template_view/$', views.no_template_view),
- url(r'^staff_only/$', views.staff_only_view),
- url(r'^get_view/$', views.get_view),
- url(r'^request_data/$', views.request_data),
- url(r'^request_data_extended/$', views.request_data, {'template': 'extended.html', 'data': 'bacon'}),
- url(r'^arg_view/(?P<name>.+)/$', views.view_with_argument, name='arg_view'),
- url(r'^nested_view/$', views.nested_view, name='nested_view'),
- url(r'^login_protected_redirect_view/$', views.login_protected_redirect_view),
- url(r'^redirects/$', RedirectView.as_view(url='/redirects/further/')),
- url(r'^redirects/further/$', RedirectView.as_view(url='/redirects/further/more/')),
- url(r'^redirects/further/more/$', RedirectView.as_view(url='/no_template_view/')),
- url(r'^redirect_to_non_existent_view/$', RedirectView.as_view(url='/non_existent_view/')),
- url(r'^redirect_to_non_existent_view2/$', RedirectView.as_view(url='/redirect_to_non_existent_view/')),
- url(r'^redirect_to_self/$', RedirectView.as_view(url='/redirect_to_self/')),
- url(r'^redirect_to_self_with_changing_query_view/$', views.redirect_to_self_with_changing_query_view),
- url(r'^circular_redirect_1/$', RedirectView.as_view(url='/circular_redirect_2/')),
- url(r'^circular_redirect_2/$', RedirectView.as_view(url='/circular_redirect_3/')),
- url(r'^circular_redirect_3/$', RedirectView.as_view(url='/circular_redirect_1/')),
- url(r'^redirect_other_host/$', RedirectView.as_view(url='https://otherserver:8443/no_template_view/')),
- url(r'^set_session/$', views.set_session_view),
- url(r'^check_session/$', views.check_session_view),
- url(r'^request_methods/$', views.request_methods_view),
- url(r'^check_unicode/$', views.return_unicode),
- url(r'^check_binary/$', views.return_undecodable_binary),
- url(r'^json_response/$', views.return_json_response),
- url(r'^parse_encoded_text/$', views.return_text_file),
- url(r'^check_headers/$', views.check_headers),
- url(r'^check_headers_redirect/$', RedirectView.as_view(url='/check_headers/')),
- url(r'^body/$', views.body),
- url(r'^read_all/$', views.read_all),
- url(r'^read_buffer/$', views.read_buffer),
- url(r'^request_context_view/$', views.request_context_view),
- url(r'^render_template_multiple_times/$', views.render_template_multiple_times),
+ path('no_template_view/', views.no_template_view),
+ path('staff_only/', views.staff_only_view),
+ path('get_view/', views.get_view),
+ path('request_data/', views.request_data),
+ path('request_data_extended/', views.request_data, {'template': 'extended.html', 'data': 'bacon'}),
+ path('arg_view/<name>/', views.view_with_argument, name='arg_view'),
+ path('nested_view/', views.nested_view, name='nested_view'),
+ path('login_protected_redirect_view/', views.login_protected_redirect_view),
+ path('redirects/', RedirectView.as_view(url='/redirects/further/')),
+ path('redirects/further/', RedirectView.as_view(url='/redirects/further/more/')),
+ path('redirects/further/more/', RedirectView.as_view(url='/no_template_view/')),
+ path('redirect_to_non_existent_view/', RedirectView.as_view(url='/non_existent_view/')),
+ path('redirect_to_non_existent_view2/', RedirectView.as_view(url='/redirect_to_non_existent_view/')),
+ path('redirect_to_self/', RedirectView.as_view(url='/redirect_to_self/')),
+ path('redirect_to_self_with_changing_query_view/', views.redirect_to_self_with_changing_query_view),
+ path('circular_redirect_1/', RedirectView.as_view(url='/circular_redirect_2/')),
+ path('circular_redirect_2/', RedirectView.as_view(url='/circular_redirect_3/')),
+ path('circular_redirect_3/', RedirectView.as_view(url='/circular_redirect_1/')),
+ path('redirect_other_host/', RedirectView.as_view(url='https://otherserver:8443/no_template_view/')),
+ path('set_session/', views.set_session_view),
+ path('check_session/', views.check_session_view),
+ path('request_methods/', views.request_methods_view),
+ path('check_unicode/', views.return_unicode),
+ path('check_binary/', views.return_undecodable_binary),
+ path('json_response/', views.return_json_response),
+ path('parse_encoded_text/', views.return_text_file),
+ path('check_headers/', views.check_headers),
+ path('check_headers_redirect/', RedirectView.as_view(url='/check_headers/')),
+ path('body/', views.body),
+ path('read_all/', views.read_all),
+ path('read_buffer/', views.read_buffer),
+ path('request_context_view/', views.request_context_view),
+ path('render_template_multiple_times/', views.render_template_multiple_times),
]
diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py
index 320531e32c..e9aa9d9c98 100644
--- a/tests/test_utils/tests.py
+++ b/tests/test_utils/tests.py
@@ -5,7 +5,6 @@ from io import StringIO
from unittest import mock
from django.conf import settings
-from django.conf.urls import url
from django.contrib.staticfiles.finders import get_finder, get_finders
from django.contrib.staticfiles.storage import staticfiles_storage
from django.core.files.storage import default_storage
@@ -22,7 +21,7 @@ from django.test.utils import (
CaptureQueriesContext, TestContextDecorator, isolate_apps,
override_settings, setup_test_environment,
)
-from django.urls import NoReverseMatch, reverse
+from django.urls import NoReverseMatch, path, reverse
from .models import Car, Person, PossessedCar
from .views import empty_response
@@ -962,11 +961,11 @@ class AssertURLEqualTests(SimpleTestCase):
class FirstUrls:
- urlpatterns = [url(r'first/$', empty_response, name='first')]
+ urlpatterns = [path('first/', empty_response, name='first')]
class SecondUrls:
- urlpatterns = [url(r'second/$', empty_response, name='second')]
+ urlpatterns = [path('second/', empty_response, name='second')]
class SetupTestEnvironmentTests(SimpleTestCase):
diff --git a/tests/test_utils/urls.py b/tests/test_utils/urls.py
index a886451721..5cfab5d831 100644
--- a/tests/test_utils/urls.py
+++ b/tests/test_utils/urls.py
@@ -1,8 +1,8 @@
-from django.conf.urls import url
+from django.urls import path
from . import views
urlpatterns = [
- url(r'^test_utils/get_person/([0-9]+)/$', views.get_person),
- url(r'^test_utils/no_template_used/$', views.no_template_used),
+ path('test_utils/get_person/<int:pk>/', views.get_person),
+ path('test_utils/no_template_used/', views.no_template_used),
]
diff --git a/tests/timezones/urls.py b/tests/timezones/urls.py
index 84b13b593d..3955b5354f 100644
--- a/tests/timezones/urls.py
+++ b/tests/timezones/urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
from . import admin as tz_admin # NOQA: register tz_admin
urlpatterns = [
- url(r'^admin/', tz_admin.site.urls),
+ path('admin/', tz_admin.site.urls),
]
diff --git a/tests/urlpatterns/path_urls.py b/tests/urlpatterns/path_urls.py
index 4c80c840d9..953fe6b6d7 100644
--- a/tests/urlpatterns/path_urls.py
+++ b/tests/urlpatterns/path_urls.py
@@ -1,5 +1,4 @@
-from django.conf.urls import include
-from django.urls import path, re_path
+from django.urls import include, path, re_path
from . import views
diff --git a/tests/urlpatterns_reverse/erroneous_urls.py b/tests/urlpatterns_reverse/erroneous_urls.py
index 4d75b49e8f..d8ccf2fc61 100644
--- a/tests/urlpatterns_reverse/erroneous_urls.py
+++ b/tests/urlpatterns_reverse/erroneous_urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import re_path
from . import views
urlpatterns = [
- url(r'(regex_error/$', views.empty_view),
+ re_path(r'(regex_error/$', views.empty_view),
]
diff --git a/tests/urlpatterns_reverse/extra_urls.py b/tests/urlpatterns_reverse/extra_urls.py
index d9c518c219..dac9a87fd2 100644
--- a/tests/urlpatterns_reverse/extra_urls.py
+++ b/tests/urlpatterns_reverse/extra_urls.py
@@ -2,13 +2,13 @@
Some extra URL patterns that are included at the top level.
"""
-from django.conf.urls import include, url
+from django.urls import include, path, re_path
from .views import empty_view
urlpatterns = [
- url(r'^e-places/([0-9]+)/$', empty_view, name='extra-places'),
- url(r'^e-people/(?P<name>\w+)/$', empty_view, name="extra-people"),
- url('', include('urlpatterns_reverse.included_urls2')),
- url(r'^prefix/(?P<prefix>\w+)/', include('urlpatterns_reverse.included_urls2')),
+ re_path('^e-places/([0-9]+)/$', empty_view, name='extra-places'),
+ re_path(r'^e-people/(?P<name>\w+)/$', empty_view, name='extra-people'),
+ path('', include('urlpatterns_reverse.included_urls2')),
+ re_path(r'^prefix/(?P<prefix>\w+)/', include('urlpatterns_reverse.included_urls2')),
]
diff --git a/tests/urlpatterns_reverse/included_app_urls.py b/tests/urlpatterns_reverse/included_app_urls.py
index 570d6fc518..e8c0469143 100644
--- a/tests/urlpatterns_reverse/included_app_urls.py
+++ b/tests/urlpatterns_reverse/included_app_urls.py
@@ -1,16 +1,16 @@
-from django.conf.urls import url
+from django.urls import path, re_path
from . import views
app_name = 'inc-app'
urlpatterns = [
- url(r'^normal/$', views.empty_view, name='inc-normal-view'),
- url(r'^normal/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='inc-normal-view'),
+ path('normal/', views.empty_view, name='inc-normal-view'),
+ re_path('^normal/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='inc-normal-view'),
- url(r'^\+\\\$\*/$', views.empty_view, name='inc-special-view'),
+ re_path(r'^\+\\\$\*/$', views.empty_view, name='inc-special-view'),
- url(r'^mixed_args/([0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='inc-mixed-args'),
- url(r'^no_kwargs/([0-9]+)/([0-9]+)/$', views.empty_view, name='inc-no-kwargs'),
+ re_path('^mixed_args/([0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='inc-mixed-args'),
+ re_path('^no_kwargs/([0-9]+)/([0-9]+)/$', views.empty_view, name='inc-no-kwargs'),
- url(r'^view_class/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.view_class_instance, name='inc-view-class'),
+ re_path('^view_class/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.view_class_instance, name='inc-view-class'),
]
diff --git a/tests/urlpatterns_reverse/included_named_urls.py b/tests/urlpatterns_reverse/included_named_urls.py
index fac37ef714..e0b00dd4ed 100644
--- a/tests/urlpatterns_reverse/included_named_urls.py
+++ b/tests/urlpatterns_reverse/included_named_urls.py
@@ -1,10 +1,10 @@
-from django.conf.urls import include, url
+from django.urls import include, path, re_path
from .views import empty_view
urlpatterns = [
- url(r'^$', empty_view, name="named-url3"),
- url(r'^extra/(?P<extra>\w+)/$', empty_view, name="named-url4"),
- url(r'^(?P<one>[0-9]+)|(?P<two>[0-9]+)/$', empty_view),
- url(r'^included/', include('urlpatterns_reverse.included_named_urls2')),
+ path('', empty_view, name="named-url3"),
+ re_path(r'^extra/(?P<extra>\w+)/$', empty_view, name="named-url4"),
+ re_path(r'^(?P<one>[0-9]+)|(?P<two>[0-9]+)/$', empty_view),
+ path('included/', include('urlpatterns_reverse.included_named_urls2')),
]
diff --git a/tests/urlpatterns_reverse/included_named_urls2.py b/tests/urlpatterns_reverse/included_named_urls2.py
index 4d617c3790..d8103eae04 100644
--- a/tests/urlpatterns_reverse/included_named_urls2.py
+++ b/tests/urlpatterns_reverse/included_named_urls2.py
@@ -1,9 +1,9 @@
-from django.conf.urls import url
+from django.urls import path, re_path
from .views import empty_view
urlpatterns = [
- url(r'^$', empty_view, name="named-url5"),
- url(r'^extra/(?P<extra>\w+)/$', empty_view, name="named-url6"),
- url(r'^(?P<one>[0-9]+)|(?P<two>[0-9]+)/$', empty_view),
+ path('', empty_view, name="named-url5"),
+ re_path(r'^extra/(?P<extra>\w+)/$', empty_view, name="named-url6"),
+ re_path(r'^(?P<one>[0-9]+)|(?P<two>[0-9]+)/$', empty_view),
]
diff --git a/tests/urlpatterns_reverse/included_namespace_urls.py b/tests/urlpatterns_reverse/included_namespace_urls.py
index 75b0bf1971..0b3b2b5a19 100644
--- a/tests/urlpatterns_reverse/included_namespace_urls.py
+++ b/tests/urlpatterns_reverse/included_namespace_urls.py
@@ -1,4 +1,4 @@
-from django.conf.urls import include, url
+from django.urls import include, path, re_path
from .utils import URLObject
from .views import empty_view, view_class_instance
@@ -8,18 +8,18 @@ testobj4 = URLObject('testapp', 'test-ns4')
app_name = 'included_namespace_urls'
urlpatterns = [
- url(r'^normal/$', empty_view, name='inc-normal-view'),
- url(r'^normal/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', empty_view, name='inc-normal-view'),
+ path('normal/', empty_view, name='inc-normal-view'),
+ re_path('^normal/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', empty_view, name='inc-normal-view'),
- url(r'^\+\\\$\*/$', empty_view, name='inc-special-view'),
+ re_path(r'^\+\\\$\*/$', empty_view, name='inc-special-view'),
- url(r'^mixed_args/([0-9]+)/(?P<arg2>[0-9]+)/$', empty_view, name='inc-mixed-args'),
- url(r'^no_kwargs/([0-9]+)/([0-9]+)/$', empty_view, name='inc-no-kwargs'),
+ re_path('^mixed_args/([0-9]+)/(?P<arg2>[0-9]+)/$', empty_view, name='inc-mixed-args'),
+ re_path('^no_kwargs/([0-9]+)/([0-9]+)/$', empty_view, name='inc-no-kwargs'),
- url(r'^view_class/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', view_class_instance, name='inc-view-class'),
+ re_path('^view_class/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', view_class_instance, name='inc-view-class'),
- url(r'^test3/', include(*testobj3.urls)),
- url(r'^test4/', include(*testobj4.urls)),
- url(r'^ns-included3/', include(('urlpatterns_reverse.included_urls', 'included_urls'), namespace='inc-ns3')),
- url(r'^ns-included4/', include('urlpatterns_reverse.namespace_urls', namespace='inc-ns4')),
+ path('test3/', include(*testobj3.urls)),
+ path('test4/', include(*testobj4.urls)),
+ path('ns-included3/', include(('urlpatterns_reverse.included_urls', 'included_urls'), namespace='inc-ns3')),
+ path('ns-included4/', include('urlpatterns_reverse.namespace_urls', namespace='inc-ns4')),
]
diff --git a/tests/urlpatterns_reverse/included_no_kwargs_urls.py b/tests/urlpatterns_reverse/included_no_kwargs_urls.py
index f124a09b2f..aa1a1a51a7 100644
--- a/tests/urlpatterns_reverse/included_no_kwargs_urls.py
+++ b/tests/urlpatterns_reverse/included_no_kwargs_urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import re_path
from .views import empty_view
urlpatterns = [
- url(r'^inner-no-kwargs/([0-9]+)/', empty_view, name="inner-no-kwargs")
+ re_path('^inner-no-kwargs/([0-9]+)/$', empty_view, name="inner-no-kwargs")
]
diff --git a/tests/urlpatterns_reverse/included_urls.py b/tests/urlpatterns_reverse/included_urls.py
index 240d9e5665..f34010b28f 100644
--- a/tests/urlpatterns_reverse/included_urls.py
+++ b/tests/urlpatterns_reverse/included_urls.py
@@ -1,9 +1,9 @@
-from django.conf.urls import url
+from django.urls import path, re_path
from .views import empty_view
urlpatterns = [
- url(r'^$', empty_view, name="inner-nothing"),
- url(r'^extra/(?P<extra>\w+)/$', empty_view, name="inner-extra"),
- url(r'^(?P<one>[0-9]+)|(?P<two>[0-9]+)/$', empty_view, name="inner-disjunction"),
+ path('', empty_view, name='inner-nothing'),
+ re_path(r'extra/(?P<extra>\w+)/$', empty_view, name='inner-extra'),
+ re_path(r'(?P<one>[0-9]+)|(?P<two>[0-9]+)/$', empty_view, name='inner-disjunction'),
]
diff --git a/tests/urlpatterns_reverse/included_urls2.py b/tests/urlpatterns_reverse/included_urls2.py
index 4a4aef8d95..ec61aecce1 100644
--- a/tests/urlpatterns_reverse/included_urls2.py
+++ b/tests/urlpatterns_reverse/included_urls2.py
@@ -5,11 +5,11 @@ each name to resolve and Django must distinguish the possibilities based on the
argument list.
"""
-from django.conf.urls import url
+from django.urls import re_path
from .views import empty_view
urlpatterns = [
- url(r'^part/(?P<value>\w+)/$', empty_view, name="part"),
- url(r'^part2/(?:(?P<value>\w+)/)?$', empty_view, name="part2"),
+ re_path(r'^part/(?P<value>\w+)/$', empty_view, name='part'),
+ re_path(r'^part2/(?:(?P<value>\w+)/)?$', empty_view, name='part2'),
]
diff --git a/tests/urlpatterns_reverse/method_view_urls.py b/tests/urlpatterns_reverse/method_view_urls.py
index e91966b4ac..39c53433c8 100644
--- a/tests/urlpatterns_reverse/method_view_urls.py
+++ b/tests/urlpatterns_reverse/method_view_urls.py
@@ -1,4 +1,4 @@
-from django.conf.urls import url
+from django.urls import path
class ViewContainer:
@@ -14,6 +14,6 @@ view_container = ViewContainer()
urlpatterns = [
- url(r'^$', view_container.method_view, name='instance-method-url'),
- url(r'^$', ViewContainer.classmethod_view, name='instance-method-url'),
+ path('', view_container.method_view, name='instance-method-url'),
+ path('', ViewContainer.classmethod_view, name='instance-method-url'),
]
diff --git a/tests/urlpatterns_reverse/named_urls.py b/tests/urlpatterns_reverse/named_urls.py
index 647c2630cf..06bb834dc7 100644
--- a/tests/urlpatterns_reverse/named_urls.py
+++ b/tests/urlpatterns_reverse/named_urls.py
@@ -1,10 +1,10 @@
-from django.conf.urls import include, url
+from django.urls import include, path, re_path
from .views import empty_view
urlpatterns = [
- url(r'^$', empty_view, name="named-url1"),
- url(r'^extra/(?P<extra>\w+)/$', empty_view, name="named-url2"),
- url(r'^(?P<one>[0-9]+)|(?P<two>[0-9]+)/$', empty_view),
- url(r'^included/', include('urlpatterns_reverse.included_named_urls')),
+ path('', empty_view, name='named-url1'),
+ re_path(r'^extra/(?P<extra>\w+)/$', empty_view, name='named-url2'),
+ re_path(r'^(?P<one>[0-9]+)|(?P<two>[0-9]+)/$', empty_view),
+ path('included/', include('urlpatterns_reverse.included_named_urls')),
]
diff --git a/tests/urlpatterns_reverse/named_urls_conflict.py b/tests/urlpatterns_reverse/named_urls_conflict.py
index 0c0c6eb47e..b1f883271f 100644
--- a/tests/urlpatterns_reverse/named_urls_conflict.py
+++ b/tests/urlpatterns_reverse/named_urls_conflict.py
@@ -1,17 +1,17 @@
-from django.conf.urls import url
+from django.urls import path, re_path
from .views import empty_view
urlpatterns = [
# No kwargs
- url(r'^conflict/cannot-go-here/$', empty_view, name='name-conflict'),
- url(r'^conflict/$', empty_view, name='name-conflict'),
+ path('conflict/cannot-go-here/', empty_view, name='name-conflict'),
+ path('conflict/', empty_view, name='name-conflict'),
# One kwarg
- url(r'^conflict-first/(?P<first>\w+)/$', empty_view, name='name-conflict'),
- url(r'^conflict-cannot-go-here/(?P<middle>\w+)/$', empty_view, name='name-conflict'),
- url(r'^conflict-middle/(?P<middle>\w+)/$', empty_view, name='name-conflict'),
- url(r'^conflict-last/(?P<last>\w+)/$', empty_view, name='name-conflict'),
+ re_path(r'^conflict-first/(?P<first>\w+)/$', empty_view, name='name-conflict'),
+ re_path(r'^conflict-cannot-go-here/(?P<middle>\w+)/$', empty_view, name='name-conflict'),
+ re_path(r'^conflict-middle/(?P<middle>\w+)/$', empty_view, name='name-conflict'),
+ re_path(r'^conflict-last/(?P<last>\w+)/$', empty_view, name='name-conflict'),
# Two kwargs
- url(r'^conflict/(?P<another>\w+)/(?P<extra>\w+)/cannot-go-here/$', empty_view, name='name-conflict'),
- url(r'^conflict/(?P<extra>\w+)/(?P<another>\w+)/$', empty_view, name='name-conflict'),
+ re_path(r'^conflict/(?P<another>\w+)/(?P<extra>\w+)/cannot-go-here/$', empty_view, name='name-conflict'),
+ re_path(r'^conflict/(?P<extra>\w+)/(?P<another>\w+)/$', empty_view, name='name-conflict'),
]
diff --git a/tests/urlpatterns_reverse/namespace_urls.py b/tests/urlpatterns_reverse/namespace_urls.py
index a92df2716a..a8fd7bb878 100644
--- a/tests/urlpatterns_reverse/namespace_urls.py
+++ b/tests/urlpatterns_reverse/namespace_urls.py
@@ -1,4 +1,4 @@
-from django.conf.urls import include, url
+from django.urls import include, path, re_path
from . import views
from .utils import URLObject
@@ -14,48 +14,48 @@ newappobj1 = URLObject('newapp')
app_name = 'namespace_urls'
urlpatterns = [
- url(r'^normal/$', views.empty_view, name='normal-view'),
- url(r'^normal/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='normal-view'),
- url(r'^resolver_match/$', views.pass_resolver_match_view, name='test-resolver-match'),
+ path('normal/', views.empty_view, name='normal-view'),
+ re_path(r'^normal/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='normal-view'),
+ path('resolver_match/', views.pass_resolver_match_view, name='test-resolver-match'),
- url(r'^\+\\\$\*/$', views.empty_view, name='special-view'),
+ re_path(r'^\+\\\$\*/$', views.empty_view, name='special-view'),
- url(r'^mixed_args/([0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='mixed-args'),
- url(r'^no_kwargs/([0-9]+)/([0-9]+)/$', views.empty_view, name='no-kwargs'),
+ re_path(r'^mixed_args/([0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='mixed-args'),
+ re_path(r'^no_kwargs/([0-9]+)/([0-9]+)/$', views.empty_view, name='no-kwargs'),
- url(r'^view_class/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.view_class_instance, name='view-class'),
+ re_path(r'^view_class/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.view_class_instance, name='view-class'),
- url(r'^unnamed/normal/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view),
- url(r'^unnamed/view_class/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.view_class_instance),
+ re_path(r'^unnamed/normal/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view),
+ re_path(r'^unnamed/view_class/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.view_class_instance),
- url(r'^test1/', include(*testobj1.urls)),
- url(r'^test2/', include(*testobj2.urls)),
- url(r'^default/', include(*default_testobj.urls)),
+ path('test1/', include(*testobj1.urls)),
+ path('test2/', include(*testobj2.urls)),
+ path('default/', include(*default_testobj.urls)),
- url(r'^other1/', include(*otherobj1.urls)),
- url(r'^other[246]/', include(*otherobj2.urls)),
+ path('other1/', include(*otherobj1.urls)),
+ re_path(r'^other[246]/', include(*otherobj2.urls)),
- url(r'^newapp1/', include(newappobj1.app_urls, 'new-ns1')),
- url(r'^new-default/', include(newappobj1.app_urls)),
+ path('newapp1/', include(newappobj1.app_urls, 'new-ns1')),
+ path('new-default/', include(newappobj1.app_urls)),
- url(r'^app-included[135]/', include('urlpatterns_reverse.included_app_urls', namespace='app-ns1')),
- url(r'^app-included2/', include('urlpatterns_reverse.included_app_urls', namespace='app-ns2')),
+ re_path(r'^app-included[135]/', include('urlpatterns_reverse.included_app_urls', namespace='app-ns1')),
+ path('app-included2/', include('urlpatterns_reverse.included_app_urls', namespace='app-ns2')),
- url(r'^ns-included[135]/', include('urlpatterns_reverse.included_namespace_urls', namespace='inc-ns1')),
- url(r'^ns-included2/', include('urlpatterns_reverse.included_namespace_urls', namespace='inc-ns2')),
+ re_path(r'^ns-included[135]/', include('urlpatterns_reverse.included_namespace_urls', namespace='inc-ns1')),
+ path('ns-included2/', include('urlpatterns_reverse.included_namespace_urls', namespace='inc-ns2')),
- url(r'^app-included/', include('urlpatterns_reverse.included_namespace_urls', 'inc-app')),
+ path('app-included/', include('urlpatterns_reverse.included_namespace_urls', 'inc-app')),
- url(r'^included/', include('urlpatterns_reverse.included_namespace_urls')),
- url(
+ path('included/', include('urlpatterns_reverse.included_namespace_urls')),
+ re_path(
r'^inc(?P<outer>[0-9]+)/', include(('urlpatterns_reverse.included_urls', 'included_urls'), namespace='inc-ns5')
),
- url(r'^included/([0-9]+)/', include('urlpatterns_reverse.included_namespace_urls')),
+ re_path(r'^included/([0-9]+)/', include('urlpatterns_reverse.included_namespace_urls')),
- url(
+ re_path(
r'^ns-outer/(?P<outer>[0-9]+)/',
include('urlpatterns_reverse.included_namespace_urls', namespace='inc-outer')
),
- url(r'^\+\\\$\*/', include('urlpatterns_reverse.namespace_urls', namespace='special')),
+ re_path(r'^\+\\\$\*/', include('urlpatterns_reverse.namespace_urls', namespace='special')),
]
diff --git a/tests/urlpatterns_reverse/nested_urls.py b/tests/urlpatterns_reverse/nested_urls.py
index f41b1449a8..d5af7d0d02 100644
--- a/tests/urlpatterns_reverse/nested_urls.py
+++ b/tests/urlpatterns_reverse/nested_urls.py
@@ -1,4 +1,4 @@
-from django.conf.urls import include, url
+from django.urls import include, path
from django.views import View
@@ -15,11 +15,11 @@ class View3(View):
nested = ([
- url(r'^view1/$', view1, name='view1'),
- url(r'^view3/$', View3.as_view(), name='view3'),
+ path('view1/', view1, name='view1'),
+ path('view3/', View3.as_view(), name='view3'),
], 'backend')
urlpatterns = [
- url(r'^some/path/', include(nested, namespace='nested')),
- url(r'^view2/$', view2, name='view2'),
+ path('some/path/', include(nested, namespace='nested')),
+ path('view2/', view2, name='view2'),
]
diff --git a/tests/urlpatterns_reverse/reverse_lazy_urls.py b/tests/urlpatterns_reverse/reverse_lazy_urls.py
index 694b23fad6..1cbda44fe9 100644
--- a/tests/urlpatterns_reverse/reverse_lazy_urls.py
+++ b/tests/urlpatterns_reverse/reverse_lazy_urls.py
@@ -1,10 +1,10 @@
-from django.conf.urls import url
+from django.urls import path
from .views import LazyRedirectView, empty_view, login_required_view
urlpatterns = [
- url(r'^redirected_to/$', empty_view, name='named-lazy-url-redirected-to'),
- url(r'^login/$', empty_view, name='some-login-page'),
- url(r'^login_required_view/$', login_required_view),
- url(r'^redirect/$', LazyRedirectView.as_view()),
+ path('redirected_to/', empty_view, name='named-lazy-url-redirected-to'),
+ path('login/', empty_view, name='some-login-page'),
+ path('login_required_view/', login_required_view),
+ path('redirect/', LazyRedirectView.as_view()),
]
diff --git a/tests/urlpatterns_reverse/tests.py b/tests/urlpatterns_reverse/tests.py
index 61dbd208b7..f902cffdac 100644
--- a/tests/urlpatterns_reverse/tests.py
+++ b/tests/urlpatterns_reverse/tests.py
@@ -7,7 +7,6 @@ import threading
from admin_scripts.tests import AdminScriptTestCase
from django.conf import settings
-from django.conf.urls import include, url
from django.contrib.auth.models import User
from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist
from django.http import (
@@ -18,7 +17,8 @@ from django.test import SimpleTestCase, TestCase, override_settings
from django.test.utils import override_script_prefix
from django.urls import (
NoReverseMatch, Resolver404, ResolverMatch, URLPattern, URLResolver,
- get_callable, get_resolver, get_urlconf, resolve, reverse, reverse_lazy,
+ get_callable, get_resolver, get_urlconf, include, path, re_path, resolve,
+ reverse, reverse_lazy,
)
from django.urls.resolvers import RegexPattern
@@ -401,7 +401,7 @@ class ResolverTests(SimpleTestCase):
def test_resolver_reverse_conflict(self):
"""
- url() name arguments don't need to be unique. The last registered
+ URL pattern name arguments don't need to be unique. The last registered
pattern takes precedence for conflicting names.
"""
resolver = get_resolver('urlpatterns_reverse.named_urls_conflict')
@@ -411,7 +411,7 @@ class ResolverTests(SimpleTestCase):
('name-conflict', (), {}, 'conflict/'),
# With an arg, the last URL in urlpatterns has precedence.
('name-conflict', ('arg',), {}, 'conflict-last/arg/'),
- # With a kwarg, other url()s can be reversed.
+ # With a kwarg, other URL patterns can be reversed.
('name-conflict', (), {'first': 'arg'}, 'conflict-first/arg/'),
('name-conflict', (), {'middle': 'arg'}, 'conflict-middle/arg/'),
('name-conflict', (), {'last': 'arg'}, 'conflict-last/arg/'),
@@ -430,10 +430,10 @@ class ResolverTests(SimpleTestCase):
TypeError from occurring later (#10834).
"""
test_urls = ['', 'a', '\\', '.']
- for path in test_urls:
- with self.subTest(path=path):
+ for path_ in test_urls:
+ with self.subTest(path=path_):
with self.assertRaises(Resolver404):
- resolve(path)
+ resolve(path_)
def test_404_tried_urls_have_names(self):
"""
@@ -1094,15 +1094,15 @@ class NoRootUrlConfTests(SimpleTestCase):
class ResolverMatchTests(SimpleTestCase):
def test_urlpattern_resolve(self):
- for path, url_name, app_name, namespace, view_name, func, args, kwargs in resolve_test_data:
- with self.subTest(path=path):
+ for path_, url_name, app_name, namespace, view_name, func, args, kwargs in resolve_test_data:
+ with self.subTest(path=path_):
# Legacy support for extracting "function, args, kwargs".
- match_func, match_args, match_kwargs = resolve(path)
+ match_func, match_args, match_kwargs = resolve(path_)
self.assertEqual(match_func, func)
self.assertEqual(match_args, args)
self.assertEqual(match_kwargs, kwargs)
# ResolverMatch capabilities.
- match = resolve(path)
+ match = resolve(path_)
self.assertEqual(match.__class__, ResolverMatch)
self.assertEqual(match.url_name, url_name)
self.assertEqual(match.app_name, app_name)
@@ -1140,7 +1140,7 @@ class ErroneousViewTests(SimpleTestCase):
def test_noncallable_view(self):
# View is not a callable (explicit import; arbitrary Python object)
with self.assertRaisesMessage(TypeError, 'view must be a callable'):
- url(r'uncallable-object/$', views.uncallable)
+ path('uncallable-object/', views.uncallable)
def test_invalid_regex(self):
# Regex contains an error (refs #6170)
@@ -1194,9 +1194,9 @@ class ViewLoadingTests(SimpleTestCase):
class IncludeTests(SimpleTestCase):
url_patterns = [
- url(r'^inner/$', views.empty_view, name='urlobject-view'),
- url(r'^inner/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='urlobject-view'),
- url(r'^inner/\+\\\$\*/$', views.empty_view, name='urlobject-special-view'),
+ path('inner/', views.empty_view, name='urlobject-view'),
+ re_path(r'^inner/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='urlobject-view'),
+ re_path(r'^inner/\+\\\$\*/$', views.empty_view, name='urlobject-special-view'),
]
app_urls = URLObject('inc-app')
diff --git a/tests/urlpatterns_reverse/urlconf_inner.py b/tests/urlpatterns_reverse/urlconf_inner.py
index e2c7b7bf80..6ea4e90f20 100644
--- a/tests/urlpatterns_reverse/urlconf_inner.py
+++ b/tests/urlpatterns_reverse/urlconf_inner.py
@@ -1,6 +1,6 @@
-from django.conf.urls import url
from django.http import HttpResponse
from django.template import Context, Template
+from django.urls import path
def inner_view(request):
@@ -10,5 +10,5 @@ def inner_view(request):
urlpatterns = [
- url(r'^second_test/$', inner_view, name='inner'),
+ path('second_test/', inner_view, name='inner'),
]
diff --git a/tests/urlpatterns_reverse/urlconf_outer.py b/tests/urlpatterns_reverse/urlconf_outer.py
index 65cf507aa4..100b1f52b1 100644
--- a/tests/urlpatterns_reverse/urlconf_outer.py
+++ b/tests/urlpatterns_reverse/urlconf_outer.py
@@ -1,8 +1,8 @@
-from django.conf.urls import include, url
+from django.urls import include, path
from . import urlconf_inner
urlpatterns = [
- url(r'^test/me/$', urlconf_inner.inner_view, name='outer'),
- url(r'^inner_urlconf/', include(urlconf_inner.__name__))
+ path('test/me/', urlconf_inner.inner_view, name='outer'),
+ path('inner_urlconf/', include(urlconf_inner.__name__))
]
diff --git a/tests/urlpatterns_reverse/urls.py b/tests/urlpatterns_reverse/urls.py
index 731c97146b..f3c27b8e13 100644
--- a/tests/urlpatterns_reverse/urls.py
+++ b/tests/urlpatterns_reverse/urls.py
@@ -1,4 +1,4 @@
-from django.conf.urls import include, url
+from django.urls import include, path, re_path
from .views import (
absolute_kwargs_view, defaults_view, empty_view, empty_view_nested_partial,
@@ -6,74 +6,74 @@ from .views import (
)
other_patterns = [
- url(r'non_path_include/$', empty_view, name='non_path_include'),
- url(r'nested_path/$', nested_view),
+ path('non_path_include/', empty_view, name='non_path_include'),
+ path('nested_path/', nested_view),
]
urlpatterns = [
- url(r'^places/([0-9]+)/$', empty_view, name='places'),
- url(r'^places?/$', empty_view, name="places?"),
- url(r'^places+/$', empty_view, name="places+"),
- url(r'^places*/$', empty_view, name="places*"),
- url(r'^(?:places/)?$', empty_view, name="places2?"),
- url(r'^(?:places/)+$', empty_view, name="places2+"),
- url(r'^(?:places/)*$', empty_view, name="places2*"),
- url(r'^places/([0-9]+|[a-z_]+)/', empty_view, name="places3"),
- url(r'^places/(?P<id>[0-9]+)/$', empty_view, name="places4"),
- url(r'^people/(?P<name>\w+)/$', empty_view, name="people"),
- url(r'^people/(?:name/)', empty_view, name="people2"),
- url(r'^people/(?:name/(\w+)/)?', empty_view, name="people2a"),
- url(r'^people/(?P<name>\w+)-(?P=name)/$', empty_view, name="people_backref"),
- url(r'^optional/(?P<name>.*)/(?:.+/)?', empty_view, name="optional"),
- url(r'^optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?', absolute_kwargs_view, name="named_optional"),
- url(r'^optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?$', absolute_kwargs_view, name="named_optional_terminated"),
- url(r'^nested/noncapture/(?:(?P<p>\w+))$', empty_view, name='nested-noncapture'),
- url(r'^nested/capture/((\w+)/)?$', empty_view, name='nested-capture'),
- url(r'^nested/capture/mixed/((?P<p>\w+))$', empty_view, name='nested-mixedcapture'),
- url(r'^nested/capture/named/(?P<outer>(?P<inner>\w+)/)?$', empty_view, name='nested-namedcapture'),
- url(r'^hardcoded/$', empty_view, name="hardcoded"),
- url(r'^hardcoded/doc\.pdf$', empty_view, name="hardcoded2"),
- url(r'^people/(?P<state>\w\w)/(?P<name>\w+)/$', empty_view, name="people3"),
- url(r'^people/(?P<state>\w\w)/(?P<name>[0-9])/$', empty_view, name="people4"),
- url(r'^people/((?P<state>\w\w)/test)?/(\w+)/$', empty_view, name="people6"),
- url(r'^character_set/[abcdef0-9]/$', empty_view, name="range"),
- url(r'^character_set/[\w]/$', empty_view, name="range2"),
- url(r'^price/\$([0-9]+)/$', empty_view, name="price"),
- url(r'^price/[$]([0-9]+)/$', empty_view, name="price2"),
- url(r'^price/[\$]([0-9]+)/$', empty_view, name="price3"),
- url(r'^product/(?P<product>\w+)\+\(\$(?P<price>[0-9]+(\.[0-9]+)?)\)/$', empty_view, name="product"),
- url(r'^headlines/(?P<year>[0-9]+)\.(?P<month>[0-9]+)\.(?P<day>[0-9]+)/$', empty_view, name="headlines"),
- url(r'^windows_path/(?P<drive_name>[A-Z]):\\(?P<path>.+)/$', empty_view, name="windows"),
- url(r'^special_chars/(?P<chars>.+)/$', empty_view, name="special"),
- url(r'^(?P<name>.+)/[0-9]+/$', empty_view, name="mixed"),
- url(r'^repeats/a{1,2}/$', empty_view, name="repeats"),
- url(r'^repeats/a{2,4}/$', empty_view, name="repeats2"),
- url(r'^repeats/a{2}/$', empty_view, name="repeats3"),
- url(r'^test/1/?', empty_view, name="test"),
- url(r'^outer/(?P<outer>[0-9]+)/', include('urlpatterns_reverse.included_urls')),
- url(r'^outer-no-kwargs/([0-9]+)/', include('urlpatterns_reverse.included_no_kwargs_urls')),
- url('', include('urlpatterns_reverse.extra_urls')),
- url(r'^lookahead-/(?!not-a-city)(?P<city>[^/]+)/$', empty_view, name='lookahead-negative'),
- url(r'^lookahead\+/(?=a-city)(?P<city>[^/]+)/$', empty_view, name='lookahead-positive'),
- url(r'^lookbehind-/(?P<city>[^/]+)(?<!not-a-city)/$', empty_view, name='lookbehind-negative'),
- url(r'^lookbehind\+/(?P<city>[^/]+)(?<=a-city)/$', empty_view, name='lookbehind-positive'),
+ re_path(r'^places/([0-9]+)/$', empty_view, name='places'),
+ re_path(r'^places?/$', empty_view, name='places?'),
+ re_path(r'^places+/$', empty_view, name='places+'),
+ re_path(r'^places*/$', empty_view, name='places*'),
+ re_path(r'^(?:places/)?$', empty_view, name='places2?'),
+ re_path(r'^(?:places/)+$', empty_view, name='places2+'),
+ re_path(r'^(?:places/)*$', empty_view, name='places2*'),
+ re_path(r'^places/([0-9]+|[a-z_]+)/', empty_view, name='places3'),
+ re_path(r'^places/(?P<id>[0-9]+)/$', empty_view, name='places4'),
+ re_path(r'^people/(?P<name>\w+)/$', empty_view, name='people'),
+ re_path(r'^people/(?:name/)$', empty_view, name='people2'),
+ re_path(r'^people/(?:name/(\w+)/)?$', empty_view, name='people2a'),
+ re_path(r'^people/(?P<name>\w+)-(?P=name)/$', empty_view, name='people_backref'),
+ re_path(r'^optional/(?P<name>.*)/(?:.+/)?', empty_view, name='optional'),
+ re_path(r'^optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?', absolute_kwargs_view, name='named_optional'),
+ re_path(r'^optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?$', absolute_kwargs_view, name='named_optional_terminated'),
+ re_path(r'^nested/noncapture/(?:(?P<p>\w+))$', empty_view, name='nested-noncapture'),
+ re_path(r'^nested/capture/((\w+)/)?$', empty_view, name='nested-capture'),
+ re_path(r'^nested/capture/mixed/((?P<p>\w+))$', empty_view, name='nested-mixedcapture'),
+ re_path(r'^nested/capture/named/(?P<outer>(?P<inner>\w+)/)?$', empty_view, name='nested-namedcapture'),
+ re_path(r'^hardcoded/$', empty_view, name='hardcoded'),
+ re_path(r'^hardcoded/doc\.pdf$', empty_view, name='hardcoded2'),
+ re_path(r'^people/(?P<state>\w\w)/(?P<name>\w+)/$', empty_view, name='people3'),
+ re_path(r'^people/(?P<state>\w\w)/(?P<name>[0-9])/$', empty_view, name='people4'),
+ re_path(r'^people/((?P<state>\w\w)/test)?/(\w+)/$', empty_view, name='people6'),
+ re_path(r'^character_set/[abcdef0-9]/$', empty_view, name='range'),
+ re_path(r'^character_set/[\w]/$', empty_view, name='range2'),
+ re_path(r'^price/\$([0-9]+)/$', empty_view, name='price'),
+ re_path(r'^price/[$]([0-9]+)/$', empty_view, name='price2'),
+ re_path(r'^price/[\$]([0-9]+)/$', empty_view, name='price3'),
+ re_path(r'^product/(?P<product>\w+)\+\(\$(?P<price>[0-9]+(\.[0-9]+)?)\)/$', empty_view, name='product'),
+ re_path(r'^headlines/(?P<year>[0-9]+)\.(?P<month>[0-9]+)\.(?P<day>[0-9]+)/$', empty_view, name='headlines'),
+ re_path(r'^windows_path/(?P<drive_name>[A-Z]):\\(?P<path>.+)/$', empty_view, name='windows'),
+ re_path(r'^special_chars/(?P<chars>.+)/$', empty_view, name='special'),
+ re_path(r'^(?P<name>.+)/[0-9]+/$', empty_view, name='mixed'),
+ re_path(r'^repeats/a{1,2}/$', empty_view, name='repeats'),
+ re_path(r'^repeats/a{2,4}/$', empty_view, name='repeats2'),
+ re_path(r'^repeats/a{2}/$', empty_view, name='repeats3'),
+ re_path(r'^test/1/?', empty_view, name='test'),
+ re_path(r'^outer/(?P<outer>[0-9]+)/', include('urlpatterns_reverse.included_urls')),
+ re_path(r'^outer-no-kwargs/([0-9]+)/', include('urlpatterns_reverse.included_no_kwargs_urls')),
+ re_path('', include('urlpatterns_reverse.extra_urls')),
+ re_path(r'^lookahead-/(?!not-a-city)(?P<city>[^/]+)/$', empty_view, name='lookahead-negative'),
+ re_path(r'^lookahead\+/(?=a-city)(?P<city>[^/]+)/$', empty_view, name='lookahead-positive'),
+ re_path(r'^lookbehind-/(?P<city>[^/]+)(?<!not-a-city)/$', empty_view, name='lookbehind-negative'),
+ re_path(r'^lookbehind\+/(?P<city>[^/]+)(?<=a-city)/$', empty_view, name='lookbehind-positive'),
# Partials should be fine.
- url(r'^partial/', empty_view_partial, name="partial"),
- url(r'^partial_nested/', empty_view_nested_partial, name="partial_nested"),
- url(r'^partial_wrapped/', empty_view_wrapped, name="partial_wrapped"),
+ path('partial/', empty_view_partial, name='partial'),
+ path('partial_nested/', empty_view_nested_partial, name='partial_nested'),
+ path('partial_wrapped/', empty_view_wrapped, name='partial_wrapped'),
# This is non-reversible, but we shouldn't blow up when parsing it.
- url(r'^(?:foo|bar)(\w+)/$', empty_view, name="disjunction"),
+ re_path(r'^(?:foo|bar)(\w+)/$', empty_view, name='disjunction'),
- url(r'absolute_arg_view/$', absolute_kwargs_view),
+ path('absolute_arg_view/', absolute_kwargs_view),
# Tests for #13154. Mixed syntax to test both ways of defining URLs.
- url(r'defaults_view1/(?P<arg1>[0-9]+)/', defaults_view, {'arg2': 1}, name='defaults'),
- url(r'defaults_view2/(?P<arg1>[0-9]+)/', defaults_view, {'arg2': 2}, 'defaults'),
+ re_path(r'^defaults_view1/(?P<arg1>[0-9]+)/$', defaults_view, {'arg2': 1}, name='defaults'),
+ re_path(r'^defaults_view2/(?P<arg1>[0-9]+)/$', defaults_view, {'arg2': 2}, 'defaults'),
- url('^includes/', include(other_patterns)),
+ path('includes/', include(other_patterns)),
# Security tests
- url('(.+)/security/$', empty_view, name='security'),
+ re_path('(.+)/security/$', empty_view, name='security'),
]
diff --git a/tests/urlpatterns_reverse/urls_without_handlers.py b/tests/urlpatterns_reverse/urls_without_handlers.py
index 4c248cd0d9..65fb054e00 100644
--- a/tests/urlpatterns_reverse/urls_without_handlers.py
+++ b/tests/urlpatterns_reverse/urls_without_handlers.py
@@ -1,9 +1,9 @@
# A URLconf that doesn't define any handlerXXX.
-from django.conf.urls import url
+from django.urls import path
from .views import bad_view, empty_view
urlpatterns = [
- url(r'^test_view/$', empty_view, name="test_view"),
- url(r'^bad_view/$', bad_view, name="bad_view"),
+ path('test_view/', empty_view, name="test_view"),
+ path('bad_view/', bad_view, name="bad_view"),
]
diff --git a/tests/urlpatterns_reverse/utils.py b/tests/urlpatterns_reverse/utils.py
index 8c96d8ca72..c1f9a55913 100644
--- a/tests/urlpatterns_reverse/utils.py
+++ b/tests/urlpatterns_reverse/utils.py
@@ -1,13 +1,13 @@
-from django.conf.urls import url
+from django.urls import path, re_path
from . import views
class URLObject:
urlpatterns = [
- url(r'^inner/$', views.empty_view, name='urlobject-view'),
- url(r'^inner/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='urlobject-view'),
- url(r'^inner/\+\\\$\*/$', views.empty_view, name='urlobject-special-view'),
+ path('inner/', views.empty_view, name='urlobject-view'),
+ re_path(r'^inner/(?P<arg1>[0-9]+)/(?P<arg2>[0-9]+)/$', views.empty_view, name='urlobject-view'),
+ re_path(r'^inner/\+\\\$\*/$', views.empty_view, name='urlobject-special-view'),
]
def __init__(self, app_name, namespace=None):
diff --git a/tests/user_commands/urls.py b/tests/user_commands/urls.py
index fe20693dce..50d7d96d51 100644
--- a/tests/user_commands/urls.py
+++ b/tests/user_commands/urls.py
@@ -1,5 +1,5 @@
-from django.conf.urls import url
+from django.urls import path
urlpatterns = [
- url(r'^some/url/$', lambda req:req, name='some_url'),
+ path('some/url/', lambda req:req, name='some_url'),
]
diff --git a/tests/view_tests/default_urls.py b/tests/view_tests/default_urls.py
index f23a286305..beb2bdc1d4 100644
--- a/tests/view_tests/default_urls.py
+++ b/tests/view_tests/default_urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
from django.contrib import admin
+from django.urls import path
urlpatterns = [
# This is the same as in the default project template
- url(r'^admin/', admin.site.urls),
+ path('admin/', admin.site.urls),
]
diff --git a/tests/view_tests/generic_urls.py b/tests/view_tests/generic_urls.py
index 2c40383a2d..8befa86ff5 100644
--- a/tests/view_tests/generic_urls.py
+++ b/tests/view_tests/generic_urls.py
@@ -1,5 +1,5 @@
-from django.conf.urls import url
from django.contrib.auth import views as auth_views
+from django.urls import path
from django.views.generic import RedirectView
from . import views
@@ -25,22 +25,20 @@ numeric_days_info_dict = dict(date_based_info_dict, day_format='%d')
date_based_datefield_info_dict = dict(date_based_info_dict, queryset=DateArticle.objects.all())
urlpatterns = [
- url(r'^accounts/login/$', auth_views.LoginView.as_view(template_name='login.html')),
- url(r'^accounts/logout/$', auth_views.LogoutView.as_view()),
+ path('accounts/login/', auth_views.LoginView.as_view(template_name='login.html')),
+ path('accounts/logout/', auth_views.LogoutView.as_view()),
# Special URLs for particular regression cases.
- url('^中文/target/$', views.index_page),
+ path('中文/target/', views.index_page),
]
# redirects, both temporary and permanent, with non-ASCII targets
urlpatterns += [
- url('^nonascii_redirect/$', RedirectView.as_view(
- url='/中文/target/', permanent=False)),
- url('^permanent_nonascii_redirect/$', RedirectView.as_view(
- url='/中文/target/', permanent=True)),
+ path('nonascii_redirect/', RedirectView.as_view(url='/中文/target/', permanent=False)),
+ path('permanent_nonascii_redirect/', RedirectView.as_view(url='/中文/target/', permanent=True)),
]
# json response
urlpatterns += [
- url(r'^json/response/$', views.json_response_view),
+ path('json/response/', views.json_response_view),
]
diff --git a/tests/view_tests/regression_21530_urls.py b/tests/view_tests/regression_21530_urls.py
index 706a08c888..c30cd1ed37 100644
--- a/tests/view_tests/regression_21530_urls.py
+++ b/tests/view_tests/regression_21530_urls.py
@@ -1,7 +1,7 @@
-from django.conf.urls import url
+from django.urls import path
from . import views
urlpatterns = [
- url(r'^index/$', views.index_page, name='index'),
+ path('index/', views.index_page, name='index'),
]
diff --git a/tests/view_tests/tests/test_debug.py b/tests/view_tests/tests/test_debug.py
index b411387eac..533d454c69 100644
--- a/tests/view_tests/tests/test_debug.py
+++ b/tests/view_tests/tests/test_debug.py
@@ -7,7 +7,6 @@ import tempfile
from io import StringIO
from pathlib import Path
-from django.conf.urls import url
from django.core import mail
from django.core.files.uploadedfile import SimpleUploadedFile
from django.db import DatabaseError, connection
@@ -15,7 +14,7 @@ from django.shortcuts import render
from django.template import TemplateDoesNotExist
from django.test import RequestFactory, SimpleTestCase, override_settings
from django.test.utils import LoggingCaptureMixin
-from django.urls import reverse
+from django.urls import path, reverse
from django.utils.functional import SimpleLazyObject
from django.utils.safestring import mark_safe
from django.utils.version import PY36
@@ -38,7 +37,7 @@ class User:
class WithoutEmptyPathUrls:
- urlpatterns = [url(r'url/$', index_page, name='url')]
+ urlpatterns = [path('url/', index_page, name='url')]
class CallableSettingWrapperTests(SimpleTestCase):
@@ -105,9 +104,6 @@ class DebugViewTests(SimpleTestCase):
def test_404(self):
response = self.client.get('/raises404/')
self.assertEqual(response.status_code, 404)
-
- def test_raised_404(self):
- response = self.client.get('/views/raises404/')
self.assertContains(response, "<code>not-in-urls</code>, didn't match", status_code=404)
def test_404_not_in_urls(self):
@@ -128,12 +124,12 @@ class DebugViewTests(SimpleTestCase):
self.assertContains(response, "The empty path didn't match any of these.", status_code=404)
def test_technical_404(self):
- response = self.client.get('/views/technical404/')
+ response = self.client.get('/technical404/')
self.assertContains(response, "Raised by:", status_code=404)
self.assertContains(response, "view_tests.views.technical404", status_code=404)
def test_classbased_technical_404(self):
- response = self.client.get('/views/classbased404/')
+ response = self.client.get('/classbased404/')
self.assertContains(response, "Raised by:", status_code=404)
self.assertContains(response, "view_tests.views.Http404View", status_code=404)
diff --git a/tests/view_tests/tests/test_i18n.py b/tests/view_tests/tests/test_i18n.py
index 5baa755580..8a56743688 100644
--- a/tests/view_tests/tests/test_i18n.py
+++ b/tests/view_tests/tests/test_i18n.py
@@ -162,7 +162,7 @@ class SetLanguageTests(TestCase):
"""
The set_language view decodes the HTTP_REFERER URL.
"""
- # The url() & view must exist for this to work as a regression test.
+ # The URL & view must exist for this to work as a regression test.
self.assertEqual(reverse('with_parameter', kwargs={'parameter': 'x'}), '/test-setlang/x/')
lang_code = self._get_inactive_language_code()
encoded_url = '/test-setlang/%C3%A4/' # (%C3%A4 decodes to ä)
diff --git a/tests/view_tests/urls.py b/tests/view_tests/urls.py
index c487dd7cb9..34415b06e0 100644
--- a/tests/view_tests/urls.py
+++ b/tests/view_tests/urls.py
@@ -1,9 +1,8 @@
import os
from functools import partial
-from django.conf.urls import include, url
from django.conf.urls.i18n import i18n_patterns
-from django.urls import path, re_path
+from django.urls import include, path, re_path
from django.utils.translation import gettext_lazy as _
from django.views import defaults, i18n, static
@@ -14,57 +13,57 @@ media_dir = os.path.join(base_dir, 'media')
locale_dir = os.path.join(base_dir, 'locale')
urlpatterns = [
- url(r'^$', views.index_page),
+ path('', views.index_page),
# Default views
- url(r'^nonexistent_url/', partial(defaults.page_not_found, exception=None)),
- url(r'^server_error/', defaults.server_error),
+ path('nonexistent_url/', partial(defaults.page_not_found, exception=None)),
+ path('server_error/', defaults.server_error),
# a view that raises an exception for the debug view
- url(r'raises/$', views.raises),
+ path('raises/', views.raises),
- url(r'raises400/$', views.raises400),
- url(r'raises403/$', views.raises403),
- url(r'raises404/$', views.raises404),
- url(r'raises500/$', views.raises500),
+ path('raises400/', views.raises400),
+ path('raises403/', views.raises403),
+ path('raises404/', views.raises404),
+ path('raises500/', views.raises500),
- url(r'technical404/$', views.technical404, name="my404"),
- url(r'classbased404/$', views.Http404View.as_view()),
+ path('technical404/', views.technical404, name='my404'),
+ path('classbased404/', views.Http404View.as_view()),
# i18n views
- url(r'^i18n/', include('django.conf.urls.i18n')),
- url(r'^jsi18n/$', i18n.JavaScriptCatalog.as_view(packages=['view_tests'])),
- url(r'^jsi18n/app1/$', i18n.JavaScriptCatalog.as_view(packages=['view_tests.app1'])),
- url(r'^jsi18n/app2/$', i18n.JavaScriptCatalog.as_view(packages=['view_tests.app2'])),
- url(r'^jsi18n/app5/$', i18n.JavaScriptCatalog.as_view(packages=['view_tests.app5'])),
- url(r'^jsi18n_english_translation/$', i18n.JavaScriptCatalog.as_view(packages=['view_tests.app0'])),
- url(r'^jsi18n_multi_packages1/$',
- i18n.JavaScriptCatalog.as_view(packages=['view_tests.app1', 'view_tests.app2'])),
- url(r'^jsi18n_multi_packages2/$',
- i18n.JavaScriptCatalog.as_view(packages=['view_tests.app3', 'view_tests.app4'])),
- url(r'^jsi18n_admin/$',
- i18n.JavaScriptCatalog.as_view(packages=['django.contrib.admin', 'view_tests'])),
- url(r'^jsi18n_template/$', views.jsi18n),
- url(r'^jsi18n_multi_catalogs/$', views.jsi18n_multi_catalogs),
- url(r'^jsoni18n/$', i18n.JSONCatalog.as_view(packages=['view_tests'])),
+ path('i18n/', include('django.conf.urls.i18n')),
+ path('jsi18n/', i18n.JavaScriptCatalog.as_view(packages=['view_tests'])),
+ path('jsi18n/app1/', i18n.JavaScriptCatalog.as_view(packages=['view_tests.app1'])),
+ path('jsi18n/app2/', i18n.JavaScriptCatalog.as_view(packages=['view_tests.app2'])),
+ path('jsi18n/app5/', i18n.JavaScriptCatalog.as_view(packages=['view_tests.app5'])),
+ path('jsi18n_english_translation/', i18n.JavaScriptCatalog.as_view(packages=['view_tests.app0'])),
+ path('jsi18n_multi_packages1/',
+ i18n.JavaScriptCatalog.as_view(packages=['view_tests.app1', 'view_tests.app2'])),
+ path('jsi18n_multi_packages2/',
+ i18n.JavaScriptCatalog.as_view(packages=['view_tests.app3', 'view_tests.app4'])),
+ path('jsi18n_admin/',
+ i18n.JavaScriptCatalog.as_view(packages=['django.contrib.admin', 'view_tests'])),
+ path('jsi18n_template/', views.jsi18n),
+ path('jsi18n_multi_catalogs/', views.jsi18n_multi_catalogs),
+ path('jsoni18n/', i18n.JSONCatalog.as_view(packages=['view_tests'])),
# Static views
- url(r'^site_media/(?P<path>.*)$', static.serve, {'document_root': media_dir, 'show_indexes': True}),
+ re_path(r'^site_media/(?P<path>.*)$', static.serve, {'document_root': media_dir, 'show_indexes': True}),
]
urlpatterns += i18n_patterns(
- url(_(r'^translated/$'), views.index_page, name='i18n_prefixed'),
+ re_path(_(r'^translated/$'), views.index_page, name='i18n_prefixed'),
)
urlpatterns += [
- url(r'template_exception/$', views.template_exception, name='template_exception'),
- url(
- r'^raises_template_does_not_exist/(?P<path>.+)$',
+ path('template_exception/', views.template_exception, name='template_exception'),
+ path(
+ 'raises_template_does_not_exist/<path:path>',
views.raises_template_does_not_exist,
name='raises_template_does_not_exist'
),
- url(r'^render_no_template/$', views.render_no_template, name='render_no_template'),
- url(r'^test-setlang/(?P<parameter>[^/]+)/$', views.with_parameter, name='with_parameter'),
+ path('render_no_template/', views.render_no_template, name='render_no_template'),
+ re_path(r'^test-setlang/(?P<parameter>[^/]+)/$', views.with_parameter, name='with_parameter'),
# Patterns to test the technical 404.
re_path(r'^regex-post/(?P<pk>[0-9]+)/$', views.index_page, name='regex-post'),
path('path-post/<int:pk>/', views.index_page, name='path-post'),
diff --git a/tests/wsgi/urls.py b/tests/wsgi/urls.py
index 6d4a3b6b4a..57e1ebf01c 100644
--- a/tests/wsgi/urls.py
+++ b/tests/wsgi/urls.py
@@ -1,5 +1,5 @@
-from django.conf.urls import url
from django.http import FileResponse, HttpResponse
+from django.urls import path
def helloworld(request):
@@ -7,6 +7,6 @@ def helloworld(request):
urlpatterns = [
- url("^$", helloworld),
- url(r'^file/$', lambda x: FileResponse(open(__file__, 'rb'))),
+ path('', helloworld),
+ path('file/', lambda x: FileResponse(open(__file__, 'rb'))),
]