Django_re_path_使用正则匹配url

与path定义的路由相比,re_path 定义的路由可以使用正则表达式匹配url。

需要注意的是:

  • 如果未定义匹配结果的变量名,匹配的结果默认传入视图的第2个形参。
  • 如果定义了匹配结果的变量名,匹配的结果会传给视图的同名字段,如果没有同名字段会报错。

定义个简单视图如下:

from django.http import HttpResponse


def test_1(request, re_result):
    return HttpResponse("test1正则匹配值为:%s" % re_result)


def test_2(request, r=None, active_id=None):
    return HttpResponse("test2正则匹配值为:%s" % active_id)

使用re_path定义个路由

from django.urls import re_path
from . import views
# 定义命名空间
app_name = "goods"

urlpatterns = [
    re_path("1/(.*)", views.test_1),        # 不定义匹配结果变量名
    re_path("2/(?P<active_id>.*)", views.test_2),   # 定义了匹配结果变量名
]

执行结果

 

posted @ 2022-04-24 23:59  码上测  阅读(341)  评论(0编辑  收藏  举报