Django url反向解析的实现

 更新时间:2021-12-28 16:29:41   作者:佚名   我要评论(0)

目录1、代码中URL可以出现的位置2、代码中URL书写规范3、URL反向解析4 案例1、代码中URL可以出现的位置
一个是在HTML模板中,一个是在视图函

1、代码中URL可以出现的位置

一个是在HTML模板中,一个是在视图函数中:

1、模板【HTML】中
(1) <a href='URL'>超链接</a> 点击后页面跳转至URL
(2) <form action='URL' method='post'> form表单中的数据,用post方法提交至URL
2、视图函数中
(1)302跳转 HttpResponseRedirect(URL) 将用户地址栏中的地址跳转到URL

2、代码中URL书写规范

(1)绝对地址
eg: http://127.0.0.1:8000/page/1
(2)相对地址

  • ‘/' 开头的相对地址 eg: ‘/page/3'

浏览器会把当前地址栏里的协议、Ip、端口加上这个地址,作为最终访问地址。
例如:当前页面地址为:http://127.0.0.1:8000/page/1; 相对地址为 ‘/page/3' ;则最终访问地址为:http://127.0.0.1:8000 + /page/3

  • 不带 ‘/' 开头的相对地址 eg: ‘page/3'

浏览器会根据当前URL的最后一个/之前的内容,加上该相对地址作为最终访问地址。
例如:当前页面地址为:http://127.0.0.1:8000/topic/detail; 相对地址为 ‘page/3' ;则最终访问地址为:http://127.0.0.1:8000/topic/ + /page/3

3、URL反向解析

(1)定义

URL反向解析是指在视图模板中,用path定义的名称来动态查找或计算出相应的路由。
path函数语法:
path(route, views, name=‘别名')

根据path中的关键字name传参给URL确定了唯一确定的名字,在模板或视图中,可以通过这个名字反向推断出此URL信息。从而避免了在模板或视图中写绝对或相对路径。

(2)使用方式

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

{% url '别名'%}
{% url '别名'% '参数值1' '参数值2'}
eg:
{% url 'pagen' '100' %}
{% url 'person' age='18' name='xixi'%}

视图函数中 – 可调用Django中的reverse方法进行反向解析

from django.urls import reverse
reverse('别名',args=[],kwargs={})
eg:
reverse('pagen',args=[100])
reverse('person',kwargs={'age':18,'name':'xixi'})
 
from django.urls import reverse
   url = reverse('base_index')
   return HttpResponseRedirect(url)

4 案例

urls.py

path('test/url', views.test_url),
# 在『模板』test_url.html中通过‘tr'反向解析该路由
path('test_url_result/<int:age>', views.test_url_result, name='tr'),
# 之前案例中的路由
# 在「视图函数」test_url_result中通过reverse反向解析该路由
path('base_index', views.base_view, name='base_index'),

views.py

def test_url(request):
    return render(request, 'test_url.html')

def test_url_result(request, age):
    # 302跳转
    from django.urls import reverse
    # 通过reverse反向解析该路由
    url = reverse('base_index')
    return HttpResponseRedirect(url)
    # return HttpResponse('--- test url is ok')   # 该方法直接return可以验证相对地址中带/ 和不到/的路由

templates/test_url.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试url</title>
</head>
<body>

<a href="http://127.0.0.1:8000/test_url_result" rel="external nofollow" >绝对地址</a>
<a href="/test_url_result" rel="external nofollow" >带'/'的相对地址</a>
<a href="test_url_result" rel="external nofollow" >不带'/'的相对地址</a>

<br>
<!-- 模板中,URL方向解析使用案例-->
<a href="{% url 'tr' '100' %}" rel="external nofollow" >url反向解析</a>

</body>
</html>

启动服务,浏览器输入:http://127.0.0.1:8000/test/url
鼠标点击后悬浮在对应连接上,可以看对应的绝对地址。

在这里插入图片描述

到此这篇关于Django url反向解析的实现的文章就介绍到这了,更多相关Django url反向解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • Django URL参数Template反向解析
  • DJANGO-URL反向解析REVERSE实例讲解
  • Python Django框架url反向解析实现动态生成对应的url链接示例
  • Django命名URL和反向解析URL实现解析
  • Django框架视图层URL映射与反向解析实例分析
  • django反向解析URL和URL命名空间的方法

相关文章

  • Django url反向解析的实现

    Django url反向解析的实现

    目录1、代码中URL可以出现的位置2、代码中URL书写规范3、URL反向解析4 案例1、代码中URL可以出现的位置 一个是在HTML模板中,一个是在视图函
    2021-12-28
  • k8s部署java项目的实现

    k8s部署java项目的实现

    下载jar的包 [root@master test]# wget https://dl.halo.run/release/halo-1.4.16.jar [root@master ~]# ls anaconda-ks.cfg flannel.yml
    2021-12-28
  • java线程池合理设置最大线程数和核心线程数方式

    java线程池合理设置最大线程数和核心线程数方式

    目录线程池合理设置最大线程数和核心线程数一开始是这么配置的后来网上查询线程池核心数配置最后我是这么配置的线程池核心线程数与最大线程数
    2021-12-28
  • QT编写地图实现在线轮廓图的示例代码

    QT编写地图实现在线轮廓图的示例代码

    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码?一、前言 轮廓图也叫行政区划,这里的轮廓图是指百度地图的区域轮廓图,不是之
    2021-12-28
  • Python数据分析与处理(一)--北京高考分数线统计分析

    Python数据分析与处理(一)--北京高考分数线统计分析

    目录1.1 数据爬取1.2 最高分最低分统计1.3 一本二本理科差值统计1.4 2006—2019年近14年每科分数线的平均值统计前言: 为了帮助广大考生和家
    2021-12-28
  • 92折话费充值API接口,三网24小时到账

    92折话费充值API接口,三网24小时到账

    话费充值接口1、充值请求下单(post 表单提交)网关URL:https://router.wikeyun.cn/rest/Recharge/pushOrder 参数名类型必填参数说明store_id字符串是店铺IDmobile字符串是
    2021-12-28
  • .net6引入autofac框架

    .net6引入autofac框架

    引入NuGet 注册Autofac 在Program的var app = builder.Build();前加上这段代码 builder.Host.UseServiceProviderFactory(new AutofacSe
    2021-12-22
  • log4j2异步打印性能提升方式

    log4j2异步打印性能提升方式

    目录log4j2异步打印性能提升分析原因解决方案log4j2性能提升点理解为以下三点log4j2异步打印性能提升 压测结果发现,log4j升级成log4j2之后对
    2021-12-22
  • C语言之直接插入排序算法的方法

    C语言之直接插入排序算法的方法

    目录一、什么是直接插入排序二、代码讲解总结直接 插入排序 (Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插
    2021-12-22
  • C语言实现求解最小公倍数的算法示例

    C语言实现求解最小公倍数的算法示例

    目录题目描述问题分析方法一:穷举法方法二:定理法题目描述 求任意两个正整数的最小公倍数 问题分析 两个或多个整数公有的倍数叫做它们的公
    2021-12-22

最新评论