在django2.0中不再使用正则表达式进行路由匹配,而是启用了新的路由配置,更加简洁
str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int,匹配正整数,包含0。
slug,匹配字母、数字以及横杠、下划线组成的字符串。
uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path,匹配任何非空字符串,包含了路径分隔符
我的问题是如何匹配任意字符,需要使用自定义吗?
我需要实现的是当用户访问/history
或者/history/任意字符
事都跳转到history页面,在不使用正则的情况下可以实现吗,试了上面的自带的路由转化器,似乎没有达到想要的效果。也有可能我没太读懂这个转换器的意思,请支出。
或者在同一条路由配置中,可以使用多个匹配方式吗?
我是一个初学者,希望能够得到大家的帮助,谢谢!
def view_history(request,history):
return HttpResponse('这是观看历史页')
path('此处如何匹配',views.view_history),
先纠正下你的这句话,在django2.0中不再使用正则表达式进行路由匹配,而是启用了新的路由配置,更加简洁,django2.0 没有去掉正则表达式匹配,只不过跟之前不一样,单独是用re_path(),你需要先引入re_path
第一个问题:我的问题是如何匹配任意字符,需要使用自定义吗?
匹配任意字符,肯定需要自己定义一下
第二个问题:在不使用正则的情况下可以实现吗?
可以,只不过稍微麻烦点
因为看你的view.py的处理函数中有包含参数,那么如果不使用正则表达式匹配的情况下,要区分两种情况,
1.history/
2.history/xx任意字符
需要两个不同的处理函数,否则history/不带任意字符的,django会报错
建议使用正则表达式,只需要一个就搞定了两种情况
个人经验,供你参考