Skip to content

Commit b01936c

Browse files
committed
use a casecade of paths
1 parent da86f4e commit b01936c

1 file changed

Lines changed: 51 additions & 39 deletions

File tree

cbv/urls.py

Lines changed: 51 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -13,50 +13,62 @@
1313
1414
"""
1515

16-
from django.urls import path, re_path, reverse_lazy
16+
from django.urls import include, path, reverse_lazy
1717
from django.views.generic import RedirectView
1818

1919
from cbv import views
2020

2121

2222
urlpatterns = [
2323
path("", RedirectView.as_view(url=reverse_lazy("home"))),
24-
re_path(
25-
r"^(?P<package>[\w-]+)/$",
26-
views.RedirectToLatestVersionView.as_view(),
27-
{"url_name": "version-detail"},
28-
),
29-
re_path(
30-
r"^(?P<package>[\w-]+)/latest/$",
31-
views.RedirectToLatestVersionView.as_view(),
32-
{"url_name": "version-detail"},
33-
name="latest-version-detail",
34-
),
35-
re_path(
36-
r"^(?P<package>[\w-]+)/(?P<version>[^/]+)/$",
37-
views.VersionDetailView.as_view(),
38-
name="version-detail",
39-
),
40-
re_path(
41-
r"^(?P<package>[\w-]+)/latest/(?P<module>[\w\.]+)/$",
42-
views.RedirectToLatestVersionView.as_view(),
43-
{"url_name": "module-detail"},
44-
name="latest-module-detail",
45-
),
46-
re_path(
47-
r"^(?P<package>[\w-]+)/(?P<version>[^/]+)/(?P<module>[\w\.]+)/$",
48-
views.ModuleDetailView.as_view(),
49-
name="module-detail",
50-
),
51-
re_path(
52-
r"^(?P<package>[\w-]+)/latest/(?P<module>[\w\.]+)/(?P<klass>[\w]+)/$",
53-
views.RedirectToLatestVersionView.as_view(),
54-
{"url_name": "klass-detail"},
55-
name="latest-klass-detail",
56-
),
57-
re_path(
58-
r"^(?P<package>[\w-]+)/(?P<version>[^/]+)/(?P<module>[\w\.]+)/(?P<klass>[\w]+)/$",
59-
views.KlassDetailView.as_view(),
60-
name="klass-detail",
61-
),
24+
path("<slug:package>/", include([
25+
path(
26+
"",
27+
views.RedirectToLatestVersionView.as_view(),
28+
{"url_name": "version-detail"},
29+
),
30+
path(
31+
"latest/", include([
32+
path(
33+
"",
34+
views.RedirectToLatestVersionView.as_view(),
35+
{"url_name": "version-detail"},
36+
name="latest-version-detail",
37+
),
38+
path("<str:module>/", include([
39+
path(
40+
"",
41+
views.RedirectToLatestVersionView.as_view(),
42+
{"url_name": "module-detail"},
43+
name="latest-module-detail"
44+
),
45+
path(
46+
"<str:klass>/",
47+
views.RedirectToLatestVersionView.as_view(),
48+
{"url_name": "klass-detail"},
49+
name="latest-klass-detail",
50+
)
51+
])),
52+
])),
53+
path(
54+
"<str:version>/", include([
55+
path(
56+
"",
57+
views.VersionDetailView.as_view(),
58+
name="version-detail",
59+
),
60+
path("<str:module>/", include([
61+
path(
62+
"",
63+
views.ModuleDetailView.as_view(),
64+
name="module-detail"
65+
),
66+
path(
67+
"<str:klass>/",
68+
views.KlassDetailView.as_view(),
69+
name="klass-detail",
70+
)
71+
])),
72+
]))
73+
]))
6274
]

0 commit comments

Comments
 (0)