无名分组
单个参数 /name/xxxx/
urls.py
from django.conf.urls import url # path不会写正则表达式 引用url来写
url('books/(\d{4})/',test01.views.books_year),
或者使用
from django.urls import re_path
re_path('books/(\d{4})/',test01.views.books_year),
views.py
def books_year(request,year): # year接收正则匹配到的结果
return HttpResponse(year)
多个参数 /name/xxxx/xx/
# 一定要把正则路径匹配多的放到最上面,要不然匹配到第一个就会终止,就不会得到我们想要的结果了
url('books/(\d{4})/(\d{2})/', test01.views.books_year_month), # 长的
url('books/(\d{4})/',test01.views.books_year), # 短的
# 视图
def books_year_month(request,year,month):
str = year + '-' + month
return HttpResponse(str)
有名分组
多个参数 (直接多个参数 单个参数略过) /name/xxxx/xx
# 底下的两个正则表达式匹配的规则一摸一样 都可以实现我的功能,想要用那个就放在最前面。
url('books/(?P<year>\d{4})/(?P<month>\d{2})/', test01.views.ym_books_year_month),
url('books/(\d{4})/(\d{2})/', test01.views.books_year_month),
# 视图
def ym_books_year_month(request,month,year):
str = year + '-' + month
return HttpResponse("有名-" + str)
默认值 (没搞明白)
url('blog/(?P<num>[0-9]+)/',test01.views.page),
def page(request,num="1"):
return HttpResponse(num)