在抓取网页模板的时候,很容易出现许多信息无法定位到相关信息的时候,这里就需要将信息进行命名,用到的是正则表达式中的(?P<name>正则表达)
re_path(r'articles/(?P<y>[0-9]{4})/(?P<m>[0-5]{2})/$',views.year_month),
这里返回的信息是year_month(request,y,m)
在视图当中显示的方法就是
这里需要看下输出的两个值的类型,我们测试一下主要的是第一个四位数,第二个是两位数,很好理解。
打印内容为
可以知道我们返回的信息为字符类型,所以可以用int转换将这个类型转换成整数就可以做数字运算。
想要解决也很简单,调用path方法就好
path("articles/<int:year>",views.path_year), #path_year(request,2001),无需前导
这里就是匹配在articles后面的内容,前面说过我们抓取的内容如果是数字也是字符类型,但是这里只要选择的是int类型的话,后面抓取出来的信息就是正整数类型,如图。
并打印类型
可以看到我们输出的类型已经就改成int
正好,以后如果想匹配一些自己想要的内容的时候,我们可以自己自定义一个path路径,具体的方法是
调用两个库,首先在app2里面建立一个文档urlconvert.py,创建一个MonConvert的类属性
from django.urls import register_converter
from app2.urlconvert import MonConvert
#在这制作一个转换器,用于转化想对应的信息。
class MonConvert:
regex="[0-9]{2}" #规则字符串。 匹配相对应的正则表达式
def to_python(self, value): #调用to_python的方法,这两个方法都是要加上去的
return int(value) #如果不是用的int(value) 输出的就str类型。
def to_url(self,value): #反向解析
return '%04d' % value
后面要做的就是将这个类属性进行激活处理,
register_converter(MonConvert,"mm") #把你做好的转化器注册进去
urlpatterns = [
path(r"articles/<mm:month>",views.path_month),
]
这样就做好一个自定义的path属性,用于判断你想要url内容