mirror of
https://github.com/django/django.git
synced 2026-02-09 02:49:25 +08:00
Refs #30515 -- Added tests for resolve_url() with view callables and arguments.
This commit is contained in:
@@ -3,7 +3,7 @@ from django.test import SimpleTestCase, override_settings
|
||||
from django.urls import NoReverseMatch, reverse_lazy
|
||||
|
||||
from .models import UnimportantThing
|
||||
from .urls import some_view
|
||||
from .views import params_cbv, params_view, some_cbv, some_view
|
||||
|
||||
|
||||
@override_settings(ROOT_URLCONF="resolve_url.urls")
|
||||
@@ -50,6 +50,28 @@ class ResolveUrlTests(SimpleTestCase):
|
||||
resolved_url = resolve_url(some_view)
|
||||
self.assertEqual("/some-url/", resolved_url)
|
||||
|
||||
def test_view_function_with_kwargs(self):
|
||||
self.assertEqual("/params/django/", resolve_url(params_view, slug="django"))
|
||||
|
||||
def test_view_function_with_args(self):
|
||||
self.assertEqual("/params/django/", resolve_url(params_view, "django"))
|
||||
|
||||
def test_class_based_view(self):
|
||||
self.assertEqual("/some-cbv/", resolve_url(some_cbv))
|
||||
|
||||
def test_class_based_view_with_kwargs(self):
|
||||
self.assertEqual("/params-cbv/5/", resolve_url(params_cbv, pk=5))
|
||||
|
||||
def test_class_based_view_with_args(self):
|
||||
self.assertEqual("/params-cbv/5/", resolve_url(params_cbv, 5))
|
||||
|
||||
def test_missing_params_raise_no_reverse_match(self):
|
||||
with self.assertRaises(NoReverseMatch):
|
||||
resolve_url(params_view)
|
||||
|
||||
with self.assertRaises(NoReverseMatch):
|
||||
resolve_url(params_cbv)
|
||||
|
||||
def test_lazy_reverse(self):
|
||||
"""
|
||||
Passing the result of reverse_lazy is resolved to a real URL
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
from django.urls import path
|
||||
|
||||
|
||||
def some_view(request):
|
||||
pass
|
||||
|
||||
from .views import params_cbv, params_view, some_cbv, some_view
|
||||
|
||||
urlpatterns = [
|
||||
path("params/<slug:slug>/", params_view, name="params-view"),
|
||||
path("params-cbv/<int:pk>/", params_cbv, name="params-cbv"),
|
||||
path("some-url/", some_view, name="some-view"),
|
||||
path("some-cbv/", some_cbv, name="some-cbv"),
|
||||
]
|
||||
|
||||
24
tests/resolve_url/views.py
Normal file
24
tests/resolve_url/views.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from django.http import HttpResponse
|
||||
from django.views import View
|
||||
|
||||
|
||||
def some_view(request):
|
||||
return HttpResponse("ok")
|
||||
|
||||
|
||||
def params_view(request, slug):
|
||||
return HttpResponse(f"Params: {slug}")
|
||||
|
||||
|
||||
class SomeView(View):
|
||||
def get(self, request):
|
||||
return HttpResponse("ok")
|
||||
|
||||
|
||||
class ParamsView(View):
|
||||
def get(self, request, pk):
|
||||
return HttpResponse(f"Params: {pk}")
|
||||
|
||||
|
||||
some_cbv = SomeView.as_view()
|
||||
params_cbv = ParamsView.as_view()
|
||||
Reference in New Issue
Block a user