|
13 | 13 |
|
14 | 14 | """ |
15 | 15 |
|
16 | | -from django.urls import path, re_path, reverse_lazy |
| 16 | +from django.urls import include, path, reverse_lazy |
17 | 17 | from django.views.generic import RedirectView |
18 | 18 |
|
19 | 19 | from cbv import views |
20 | 20 |
|
21 | 21 |
|
22 | 22 | urlpatterns = [ |
23 | 23 | 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 | + ])) |
62 | 74 | ] |
0 commit comments