与path定义的路由相比,re_path 定义的路由可以使用正则表达式匹配url。
需要注意的是:
- 如果未定义匹配结果的变量名,匹配的结果默认传入视图的第2个形参。
- 如果定义了匹配结果的变量名,匹配的结果会传给视图的同名字段,如果没有同名字段会报错。
定义个简单视图如下:
from django.http import HttpResponsedef 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), # 定义了匹配结果变量名
]
执行结果
源码等资料获取方法
各位想获取源码的朋友请点赞 + 评论 + 收藏,三连!
三连之后我会在评论区挨个私信发给你们~