一、正则路径中的无名分组

1.1创建正则无名分组
  • urls.py
from django.contrib import admin
from django.urls import path,re_path,include
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'^index/(\d{4})/$',views.index),
]

备注:通过from django.urls import re_path 将正则re_path模块导入进来,之后通过正则匹配一份分组(\d{4}),因为定义的是无名分组,所以它的值名称无需定义,只需要在views试图函数中定义一个形参即可
1.2定义视图函数index
  • views.py
def index(request,id):
    hi = " Give me the strength to make my love fruitful in service."
    l1 = [11,22,33]
    now = datetime.datetime.now()
    L1 = ['alex', '金老板', '武佩琪']
    return render(request,'index.html',{"hi":hi,"l1":l1,"now":now,"L1":L1,"id":id})
备注:这里定义了多个变量值,之后在通过template模板进行渲染,主要只需要看id值即可
1.3定义template模板
  • index.html
<h3>路由正则的无名分组打印id值</h3>
{{ id }}
备注:通过template模板将视图函数中取到的值变量id进行渲染
1.4访问测试
http://127.0.0.1:8000/index/2005/
也没访问的信息如下:
路由正则的无名分组打印id值
2005 

备注:可以看到当在浏览器进行get请求时有2005的关键字则可以打印2005,同时输入其他4位数字也可以进行打印

二、正则路径中的有名分组

2.1创建正则有名分组
  • url.py
urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'^order/(?P<year>\d{4})/(?P<month>\d{2})/$',views.order),
]

备注:可以看到分别定义了两个分组:year、month
2.2定义视图函数order
  • views.py
def order(request,month,year):
    return render(request,'order.html',locals())

备注:将两个有名分组传入函数中,注意:如果不传如对应的形参则django会报错
2.3定义template模板
  • order.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h3>有名分组</h3>
<p>年份:{{ year }}</p>
<p>月份:{{ month }}</p>
</body>
</html>

备注:分别获取变量year、month镜像模板渲染
2.4访问测试
http://127.0.0.1:8000/order/2005/04/
页面展示如下:

有名分组

年份:2005

月份:04

备注:分别将两个有名分组变量进行渲染
最后修改日期: 2020年7月14日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。