无名分组和有名分组
分组
分组:在正则表达式中,使用小括号括起来的内容就是的分组
单独的分组其实是没有意义的,它不影响我们的正常匹配。re模块里面的分组优先原则: re.match()。先把分组的内容显示出来。
无名分组
无名分组:就是把路由地址匹配的数据以未知参数的形式传递给视图函数
url('^test/(\d+)/(\d+)$', views.test)
def test(request, xx, yy):
print(xx, yy) # 123
return HttpResponse("test")
有名分组
有名分组:在正则表达式中,使用小括号括起来的内容,起一个名字,这就是有名分组。把路由地址匹配到的数据以关键字参数的形式传递给视图函数。
url('^test/(?P<year>\d+)/(\d+)$', views.test)
?P< 分组名字>
可以在同一个路由地址里面添加多个有名分组。
有名分组和无名分组能一起使用吗?
不能,*args()接收不到数据
有名分组能多次使用吗?
能
无名分组能多次使用吗?
能
# 但是无名或者有名单独的可以使用多次
url('^testadd/(?P<year>\d+)/(?P<month>\d+)/(?P<month>\d+)/(?P<month>\d+)$', views.testadd)
url('^test/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)$', views.test),
# django2中的用法
re_path('^test/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)/(\d+)$', views.test),
re_path('^testadd/(?P<year>\d+)/(?P<month>\d+)/(?P<month>\d+)/(?P<month>\d+)$', views.testadd)
解析
后端反向解析
意思是可以给路由起一个名字,然后通过一个方法可以解析出这个名字对应的路由地址
url.py
urlpatterns = [
path('admin/', admin.site.urls),
path('proxy/v1/v2', views.proxy, name='proxy'),
path('test/', views.test),
]
view.py
def proxy(request, *args, **kwargs):
print(args)
print(kwargs)
return HttpResponse("SUCCESS!____TESTED!")
def test(request):
print('HOME')
# 后端反向解析
print(reverse("proxy"))
return HttpResponse("HOME")
console
Watching for file changes with StatReloader
System check identified no issues (0 silenced).
August 05, 2023 - 03:49:10
Django version 3.2.20, using settings 'TT.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
HOME
/proxy/v1/v2
[05/Aug/2023 03:49:11] "GET /test/ HTTP/1.1" 200 4
/proxy/v1/v2
前端反向解析
HTML文件
<body>
<a href="{% url 'proxy' %}">
CLICK
</a>
</body>
<a href="{% url 'proxy' %}"> 这个是语法重点