【代码中url出现位置】
- 模板html中:
- <a href='url'>测试文本</a>:点击后页面跳转至url
- <form action='url' method='post'>:form表单中的数据用post方法提交至url
- 视图函数中:302跳转,HttpResponseRedirect('url')将用户地址栏中的地址跳转至url
【代码中url书写规范】
- 绝对地址:如,http://127.0.0.1:8000/page/1
- 相对地址:
- '/'开头的相对地址(常用):浏览器会把当前地址栏的协议、ip和端口加上这个地址,作为最终访问地址。
- 没有'/'开头的相对地址:浏览器会根据当前url的最后一个'/'号+这个'/'号之前的内容+该相对地址,来作为最终访问地址。
举例:
当前地址栏中的地址为http://127.0.0.1:8000/topic/detail
(1)'/page/1':这是'/'开头的相对地址。
截取协议、ip和端口号:http://127.0.0.1:8000
加上相对地址,得到最终访问地址:http://127.0.0.1:8000/page/1
(2)'page/1':这是没有'/'开头的相对地址。
截取最后一个'/'号以及它前面的内容:http://127.0.0.1:8000/topic/
加上相对地址,得到最终访问地址:http://127.0.0.1:8000/topic/page/1
【url反向解析】
*url反向解析是指在视图或模板中,用path定义的名称来动态查找或计算出相应的路由。
*根据path(route, views, name="别名")中的别名传参给url确定了个唯一确定的名字,在模板或视图中,可以通过这个别名反向推断出此url信息。
- 模板中的反向解析:通过url标签实现地址的反向解析
{% url '别名' %}
<!--当url地址中含有path转换器等包含参数时,可以在别名后面加上参数-->
{% url '别名' '参数值1' '参数值2' %}
<!--举例-->
{% url 'person' age='18' name='Cindy' %}
- 视图函数中的反向解析:可调用Django中的reverse方法进行反向解析
from django.urls import reverse
reverse('别名', args=[], kwargs={})
# reverse('pagen', args=[300])
# reverse('person'.kwargs={'name':'Cindy', 'age':18})
# 举例
from django.urls import reverse
def test(request):
url = reverse('base_index')
return HttpResponseRedirect(url) # 302跳转,浏览器由响应头Location得知应该跳转到哪个地址