url常见于出现在以下几个地方:1.超链接的href 2.from的action 3.视图函数的HttpResponseRedirect(‘url’)
【资料图】
在相对地址的情况下,有两种解析方式:
第一种是以‘/’开的地址,比如说‘/page/1’,遇见这些url,浏览器就会在原来的协议+主机(或者域名)+端口后直接加入‘/url’,若当前地址是http://193.136.123.235:9999/toptic1/topic2/12,将会解析成http://193.136.123.235:9999/page/1
第二种是不以‘/’开头的地址,比如说是‘page/’,遇见这种url,浏览器会根据当前的url的最后一个‘/’之前的内容,直接加上url,若当前地址是http://193.136.123.235:9999/toptic1/topic2/12,将会解析成http://193.136.123.235:9999/toptic1/topic2/page/1
浏览器对地址的解析方式很重要,如果分析不好的话,页面跳转将混乱不堪甚至404
在绝对地址的情况下,以上的情况都会直接访问直接地址url
项目地址的容错性和可扩展性强一些,建议写相对地址,且建议写相对地址的第一种写法(以‘/’开头的url),最不容易出错误
一个项目的发展会出现多层次的服务,对应的url可能会更加复杂和冗长,为了解决这个问题,我们可以给url起别名,模板会反向解析别名来获取真实的url。
由于反向解析是动态的,无论url如何更改都可以通过name来反向解析出url出来。
要实现反向解析,第一步便是构造从name到url的映射
这里我们使用path来做绑定
path(url,views.xxx, name)
在模板中,可以通过 {% url 'name'%]来动态获取出url,若是要求实习‘url?a=1&b=2’的路径参数传递,则需要{% url 'name' a='1' b='2'}来实现获取带参数的url
在视图函数中,也可以调用django的reverse的方法来反向解析获取url,特别是在302重定向的时候可以用到这一技术。
以上就是url的解析了,包括了浏览器的两种解析和模板以及视图函数的反向解析。
标签: