Fix admin login 500 when clients omit the trailing slash.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Shayan Azadi
2026-08-17 18:49:15 +03:30
parent 26b83dabac
commit e8423facaa
5 changed files with 66 additions and 9 deletions

View File

@@ -1,5 +1,6 @@
from django.urls import path, include
from django.urls import include, re_path
from rest_framework.routers import DefaultRouter
from .views import (
ContactUsViewSet,
CompositionViewSet,
@@ -9,14 +10,20 @@ from .views import (
admin_me,
)
router = DefaultRouter()
class OptionalSlashRouter(DefaultRouter):
"""Match /api/resource and /api/resource/ so POST clients do not hit APPEND_SLASH."""
trailing_slash = '/?'
router = OptionalSlashRouter()
router.register(r'contact-us', ContactUsViewSet, basename='contact-us')
router.register(r'compositions', CompositionViewSet, basename='composition')
router.register(r'campaigns', CampaignViewSet, basename='campaign')
urlpatterns = [
path('admin/login/', admin_login, name='admin-login'),
path('admin/logout/', admin_logout, name='admin-logout'),
path('admin/me/', admin_me, name='admin-me'),
path('', include(router.urls)),
re_path(r'^admin/login/?$', admin_login, name='admin-login'),
re_path(r'^admin/logout/?$', admin_logout, name='admin-logout'),
re_path(r'^admin/me/?$', admin_me, name='admin-me'),
re_path(r'^', include(router.urls)),
]