Django第三节课
# re_path(命名分组模式,视图函数名) 命名分组模式: (?P<变量 名>正则模式) # 限制只能输入最多两位数年龄 #/the_ 3/set_age/1 可以匹配 #/the_ 3/set_age/111 不可以匹配 re_path('set_age/(?P<age>\d{1,2})$',set_age), #以商城为例,商城的商品有很多,每一个商品的详细页不能够去对应一个html,因为商品太多了。
一般在请求的时候,传递当前要查看的某一个商品id #我们在指定路由的时候可以接收商品id过来 #/the_ 3/1111.html re_path('^(?P<id>\d+)\.html$',goods), #商品还会有分类 #/the_3/分类id/商品id.html re_path('(?P<fenlei>\d+)/(?P<id>\d+)\.html',goods2),
在写正则匹配的时候 记得加上正则模式的开始符号和结束符号,因为一旦前面的正则被匹配上了之后,
后面的不再执行
正则模式开始符号(^)和结束符号($)
path() 字符串路由
re_path():正则路由,会把ur1地址看成是一个正则模式,需要和客户端传递来的地址和正则做匹配
两个函数使用的参数一致, 只是第一个参数写法不同。
关于路由后缀是否要带斜杠的问题,在正常情况下,发现并没有太大的区别,通过浏览器network发现
如果路由自己没有带后缀,浏览器访问就不能够加斜杠后缀,会出404 因为找不到资源。
具体到底要不要加,如果说视图函数返回的是静态资源路径,一定要注意资源路径的问题,我们自己写的是
相对路径,浏览器去找会解析绝对路径,根据实际情况出发。并且不带路径可以不需要做两次请求。
请求和响应
请求和响应是客户端和服务端之间的沟通动作,有一次请求就会有一次响应。在视图函数中使用request作为默认参数接收请求数据,
#the_3/getrequest?lan=python&lan=java&lan=c++ path('getrequest',get_request) def get_request(request): # 怎么接收客户端传递过来的请求参数 print(request.GET) #<QueryDict: {'lan': ['python']}> print(request.GET['lan']) print(request.GET.get('lan')) #上面两种都是根据key获取value的方式,第一种当key不存在,会出异常,
第二种当key不存在,不会出异常,会返回none print(request.GET.getlist('lan')) #['python', 'java', 'c'] 当key同名的情况下,
获取所有的value使用getlist print(request.path_info) #/the_3/getrequest 获取路由地址 print(request.method) # GET 获取请求方式 return HttpResponse('get_request')
posted on 2022-01-18 14:01 不辜负这每寸美好时光 阅读(46) 评论(0) 收藏 举报
浙公网安备 33010602011771号