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), # 定义了匹配结果变量名 ]
执行结果