如何将 Django URL 参数限制为选项列表?

How to limit Django URL parameter to a list of options?

我的项目中有以下 URL:

from django.urls import include, path

urlpatterns = [
    path('case/<str:type>/<int:id>/', views.case, name='case'),
    ...
]

它工作正常,但是 type URL 参数在我的数据库中实际上只能有 2 个值:"internal""external"。我如何在我的 URL 路径本身中限制它?将使我不必在视图中验证它。感谢您的帮助。

试试这个:

from django.urls import include, re_path

urlpatterns = [
    re_path(r'case/(?P<type>\binternal\b|\bexternal\b)/<int:id>/', views.case, name='case'),
    ...
]

让我知道它是否有效

您可以创建一个位于视图上方的装饰器,用于验证 url 字符串中的类型值。

如果类型不在允许列表中,IE 会引发 404。