一、再谈URL
1.1. 代码中URL出现的位置
- 模板HTML中
- < a href=‘url’>超链接</a>:点击后页面跳转至url
- <form action=‘url’ method=‘post’>:form表单中的数据用post方法提交至url
- 视图函数中 302跳转 HttpResponseRedirect(‘url’):将用户地址栏中的地址跳转到url
1.2. 代码中URL书写规范
-
绝对地址
http://127.0.0.1:8000/page/1
-
相对地址
- ‘/page/1’ — ‘/’ 开头的相对地址,浏览器会把当前地址栏里的协议、ip和端口号加上这个地址,作为最终访问地址。即如果当前页面地址栏为http://127.0.0.1:8000/page/3,当前相对地址最终结果为http://127.0.0.1:8000 + /page/1
- ‘page/1’ — 没有 ‘/’ 开头的相对地址,浏览器会根据当前url的最后一个/之前的内容,加上该相对地址作为最终访问地址。例如当前地址栏地址为http://127.0.0.1:8000/topic/detail,则该相对地址最终结果为http://127.0.0.1:8000/topic/ + page/1
二、URL反向解析
URL反向解析是指:在视图或模板中,用path定义的名称来动态查找或计算出相应的路由。
path函数的语法:
path(route, views, name = "别名")
例如:
page('page', views.page_view, name="page_url")
根据path中的name=
关键字传参给URL确定了个唯一确定的名字,在模板或视图中,可以通过这个名字推断出此URL信息。
模板中,通过url标签实现地址的反向解析
{% url '别名' %}
{% url '别名' '参数值1' '参数值2' %}
ex
{% url 'pagen' '400' %}
{% url 'person' age='18' name='gxn' %}
示例:
在视图函数中,可以调用django中的reverse方法进行反向解析。
测试: