URL django 中的模式以匹配有限的单词集
URL pattern in django to match limited set of words
我在 Django 中有一个 URL 模式,其中有一个变量(称为 name
),它应该只采用 select 单词列表中的一个。像这样:
path("profile/<marta|jose|felipe|manuela:name>/", views.profile),
所以基本上只有这些路径有效:
- profile/marta/
- profile/jose/
- profile/felipe/
- profile/manuela/
我该如何在 Django url 模式中配置它?上面的语法试图说明这个想法但不起作用。我见过 this ten year old question 但它使用了 url 模式文件中以前的格式,所以我想现在应该以不同的方式完成...?
为什么不让它们可见?
from django.http import Http404
def profiles(request, name):
if not name in ['marta', 'jose', 'felipe', 'manuela']:
raise Http404('You shall not pass!')
或你可以简单地使用re_path
:
urlpatterns = [
re_path(r'^profile/(?P<name>marta|jose|felipe|manuela)/$', views.index, name='index'),
]
我在 Django 中有一个 URL 模式,其中有一个变量(称为 name
),它应该只采用 select 单词列表中的一个。像这样:
path("profile/<marta|jose|felipe|manuela:name>/", views.profile),
所以基本上只有这些路径有效:
- profile/marta/
- profile/jose/
- profile/felipe/
- profile/manuela/
我该如何在 Django url 模式中配置它?上面的语法试图说明这个想法但不起作用。我见过 this ten year old question 但它使用了 url 模式文件中以前的格式,所以我想现在应该以不同的方式完成...?
为什么不让它们可见?
from django.http import Http404
def profiles(request, name):
if not name in ['marta', 'jose', 'felipe', 'manuela']:
raise Http404('You shall not pass!')
或你可以简单地使用re_path
:
urlpatterns = [
re_path(r'^profile/(?P<name>marta|jose|felipe|manuela)/$', views.index, name='index'),
]