代码中URL出现的位置
- Templates模板中(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
- 相对地址:
第一种:'/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='别名')
- 例如:
path('page', views.page_view, name='page_url')
根据path中的'name='关键字参数给url确定了唯一的名字,在模板或视图中,可以通过这个名字反向推断出此url的信息。
模板中的URL反向解析
在Template模板中,可以通过url标签实现地址的反向解析,代码为{% url '别名' ('参数值1' '参数值2' ……) %}
例如:{% url 'pagen' '400' %}
,{% url 'person' age='18' name='Mike' %}
视图函数中的URL反向解析
在view视图函数中,可调用django中的reverse方法进行反向解析,需要先导入该方法from django.urls import reverse
,使用语法为reverse('别名', args=[], kwargs={})
例如:print(reverse('pagen', args=[300]))
,print(reverse('person', kwargs={'name':'Mike', 'age':18}))