无名分组

单个参数 /name/xxxx/

urls.py

  1. from django.conf.urls import url # path不会写正则表达式 引用url来写
  2. url('books/(\d{4})/',test01.views.books_year),
  3. 或者使用
  4. from django.urls import re_path
  5. re_path('books/(\d{4})/',test01.views.books_year),

views.py

  1. def books_year(request,year): # year接收正则匹配到的结果
  2. return HttpResponse(year)

image.png

多个参数 /name/xxxx/xx/

  1. # 一定要把正则路径匹配多的放到最上面,要不然匹配到第一个就会终止,就不会得到我们想要的结果了
  2. url('books/(\d{4})/(\d{2})/', test01.views.books_year_month), # 长的
  3. url('books/(\d{4})/',test01.views.books_year), # 短的
  4. # 视图
  5. def books_year_month(request,year,month):
  6. str = year + '-' + month
  7. return HttpResponse(str)

image.png

有名分组

多个参数 (直接多个参数 单个参数略过) /name/xxxx/xx

  1. # 底下的两个正则表达式匹配的规则一摸一样 都可以实现我的功能,想要用那个就放在最前面。
  2. url('books/(?P<year>\d{4})/(?P<month>\d{2})/', test01.views.ym_books_year_month),
  3. url('books/(\d{4})/(\d{2})/', test01.views.books_year_month),
  4. # 视图
  5. def ym_books_year_month(request,month,year):
  6. str = year + '-' + month
  7. return HttpResponse("有名-" + str)

image.png

默认值 (没搞明白)

  1. url('blog/(?P<num>[0-9]+)/',test01.views.page),
  2. def page(request,num="1"):
  3. return HttpResponse(num)

image.png