如何对某些单词有例外 - 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。我已经设置了一个功能来避免用户有 slug
像 settings
或 notifications
.
我看到有些网站使用前缀或类似的东西
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')
i
或 user
永远不会被视为 slug
配置文件,因为 slug 正则表达式必须至少包含 5 个字符。
如何将这些单词或单词列表 ['settings','notifications']
作为正则表达式模式中的例外?
或
我是否需要使用 url 中包含 i
user
的示例?
解决方案比这更简单。只需将您的特定网址放在 前面 ;由于模式总是按顺序匹配,设置和通知将匹配它们自己的路径而不是 slug 路径。
在我的网站上,人们可以通过 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。我已经设置了一个功能来避免用户有 slug
像 settings
或 notifications
.
我看到有些网站使用前缀或类似的东西
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')
i
或 user
永远不会被视为 slug
配置文件,因为 slug 正则表达式必须至少包含 5 个字符。
如何将这些单词或单词列表 ['settings','notifications']
作为正则表达式模式中的例外?
或
我是否需要使用 url 中包含 i
user
的示例?
解决方案比这更简单。只需将您的特定网址放在 前面 ;由于模式总是按顺序匹配,设置和通知将匹配它们自己的路径而不是 slug 路径。