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

源码等资料获取方法

各位想获取源码的朋友请点赞 + 评论 + 收藏,三连!
三连之后我会在评论区挨个私信发给你们~
文章介绍了在Django中,使用re_path定义的路由如何利用正则表达式匹配URL,并通过示例展示了匹配结果如何传递给视图函数。当未定义变量名时,匹配结果默认作为第二个参数;定义变量名后,匹配结果将按名称传入对应视图字段。同时给出了两个不同情况下的视图函数定义和路由配置示例。
2万+

被折叠的 条评论
为什么被折叠?



