【发布时间】:2019-01-15 18:00:15
【问题描述】:
我需要一个匹配以下字符串的正则表达式:
- 用户/24
- 用户/24/
- users/24/sam
- users/24/sam/
- users/24/sam/tab_name
- users/24/sam/tab_name/
其中,pk=24,username=sam,tab=tab_name
到目前为止,我有一个网址:
url(r'^users/(?P<pk>\d+)/(?P<username>[-\w\d]+)?/?(?P<tab>[-\w\d]+)?/?', vw.ProfileView.as_view(), name='profile')
上面的 url 匹配上面的所有内容。但是在使用时
{% url 'profile' pk=24 username="sam" tab="tab_name" %}
输出是:users/samtab_name
我知道这里的问题,即/? 可选斜杠。但我不希望它在使用{% url 'profile' pk=24 username="sam" tab="tab_name" %}时是可选的
帮我解决这个问题。
【问题讨论】:
-
我建议您使用所需的斜线(使用
/而不是/?)。然后默认的 Django 行为将重定向到带有斜杠的 URL(例如/users/24/sam->/users/24/sam/)。有关更多信息,请参阅append_slash上的文档。 -
@WiktorStribiżew 您的正则表达式完成了这项工作。如果您解释一下
?:,我将不胜感激
标签: regex django django-templates django-views django-urls