我正在尝试在 Django 中定义一个 re_path,以捕获除以 /admin/ 开头的所有 URL。我的目标是将未知 URL 重定向到自定义视图 (RedirectView),同时确保排除所有管理 URL(包括 /admin/mymodel/something/ 等子路径)。
from django.urls import re_path, path
from django.contrib import admin
from . import views
urlpatterns = [
path('admin/', admin.site.urls), # Ensure Django admin URLs are handled
]
# Catch-all pattern that should exclude /admin/ URLs
urlpatterns += [
re_path(r"^.*/(?!admin/$)[^/]+/$", views.RedirectView.as_view(), name="my-view"),
]
问题:
像 localhost:8000/admin/mymodel/something/ 这样的 URL 被正确忽略,这很好。
但是,像 localhost:8000/something/ 这样的单段 URL 没有被匹配,即使它们应该被重定向。