Django第三节课

url路由下

使用path函数可以指定路由名字和对应的视图函数处理逻辑

正则path,对路由进行更加精准的匹配  re_path

# 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)    收藏  举报