如何在 Django 中使用可选的正则表达式来匹配 URL?

2023-04-11 00:00:00 匹配 可选 如何在

在 Django 中,可以使用正则表达式来匹配 URL。有时候我们可能需要某些 URL 是可选的,也就是说,可以有或者没有这个 URL。

比如,我们希望可以访问 pidancode.com 或者 pidancode.com/about,其中 /about 是可选的,这时我们可以使用如下的正则表达式:

from django.urls import re_path

urlpatterns = [
    re_path(r'^pidancode\.com(/about)?/$', views.my_view),
]

上面的正则表达式中,(/about)? 表示 /about 是可选的,即可以有也可以没有。$ 表示 URL 结尾,防止匹配到其他的 URL。

接下来,当用户访问 pidancode.com/about 时,Django 会自动解析出 /about 这个参数,然后将其传递给 Views 层的 my_view 函数,我们可以在 my_view 函数中获取这个参数并进行相应的处理。

例如,我们可以这样书写视图函数:

def my_view(request, option=None):
    if option:
        return HttpResponse("您正在访问 pidancode.com/about。")
    else:
        return HttpResponse("您正在访问 pidancode.com。")

当访问 pidancode.com 时,响应内容是 “您正在访问 pidancode.com。”,访问 pidancode.com/about 时,响应内容是 “您正在访问 pidancode.com/about。”。

这样,我们就成功地使用了可选的正则表达式来匹配 URL。

相关文章