【Django】url反向解析

代码中url出现的位置

1,模板【html中】

        1,<a href='url'>超链接</a> 击后页面跳转至 url

        2,<form action='url' method='post'> form表单中的数据用post方法提交至url

2,视图函数中-302跳转 HttpResponseRedirect('url') 将用户地址栏中的地址跳转到url

代码中url书写规范

1,绝对地址

        http://128.9.9.1:8000/page/1

2,相对地址

        1,'/page/1'  -  '/' 开头的相对地址 ,浏览器会把当前地址栏里的协议,ip和端口加上这个地址,作为最终访问地址,即如果当前页面地址栏为http://127.0.0.1:8000/page/3;当前相对地址最终结果为http://127.0.0.1:8000 + /page/1

         2,'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_views,name="page_url")

根据path中的'name='关键字传参给url确定了个唯一确定的名字,在模板或视图中,可以通过这个名字反向推断出该url的信息

模板中 - 通过url标签实现地址的反向解析

  • {% url '别名' %}
  • {% url '别名' '参数值1' '参数值2' %}

示例代码

路由

urlpatterns = [
    path('home/',views.home_view),
    path('test/',views.test_html,name='t')
]

 视图

def test_html(request):
    return render(request, 'test_html.html')
def home_view(request):
    return render(request, 'home.html')

模板(home.html)

<body>
    <h3>这是主页</h3>
    <a href="{% url 't' %}">跳转到测试页面</a>
</body>

模板(test_html.html)

<body>
    <h3>这是个测试页面</h3>
</body>

运行

视图函数中 - 通过调用reverse方法反向解析

from django.urls import reverse

reverse('别名' , args=[], kwargs={})

示例代码

路由

urlpatterns = [
    path('myapp/<int:id>/', views.my_view, name='my_view'),
]

视图

from django.urls import reverse
from django.http import HttpResponseRedirect

def my_view(request, id):
    url = reverse('my_view', args=[id])
    return HttpResponseRedirect(url)

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值