如何对某些单词有例外 - django url 模式中的正则表达式?

How to have exception for some words - Regex in django url pattern?

在我的网站上,人们可以通过 url 访问其他人的个人资料,例如 https://example.com/slug-profile,这是模式:

path('<slug:slug>',views.profile,name='profile')

我还希望用户转到 settings,notifications:

path('settings',views.param,name='param')
# https://example.com/settings

path('notifications',views.notifications,name='notifications')
# https://example.com/notifications

但在这种情况下,settings 将被视为 slug。我已经设置了一个功能来避免用户有 slugsettingsnotifications.

我看到有些网站使用前缀或类似的东西

www.example.com/<strong>user</strong>/settings/
www.twitter.com/<strong>i</strong>/notifications/

在我的项目中我会做:

re_path(r'^(?P<slug>\w{5,})$',views.profile,name='profile')

path('i/settings',views.param,name='param')

iuser 永远不会被视为 slug 配置文件,因为 slug 正则表达式必须至少包含 5 个字符。

如何将这些单词或单词列表 ['settings','notifications'] 作为正则表达式模式中的例外?

我是否需要使用 url 中包含 i user 的示例?

解决方案比这更简单。只需将您的特定网址放在 前面 ;由于模式总是按顺序匹配,设置和通知将匹配它们自己的路径而不是 slug 路径。