Django url反向解析的实现

 更新时间:2021年12月28日 15:56:46   作者:loveysuxin  
本文主要介绍了Django url反向解析的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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反向解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python爬虫使用requests发送post请求示例详解

    python爬虫使用requests发送post请求示例详解

    这篇文章主要介绍了python爬虫使用requests发送post请求示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 彻底搞懂 python 中文乱码问题(深入分析)

    彻底搞懂 python 中文乱码问题(深入分析)

    现在有的小伙伴为了躲避中文乱码的问题甚至代码中不使用中文,注释和提示都用英文,我曾经也这样干过,但这并不是解决问题,而是逃避问题,今天我们一起彻底解决 Python 中文乱码的问题
    2020-02-02
  • 聊聊Python中的浮点数运算不准确问题

    聊聊Python中的浮点数运算不准确问题

    这篇文章主要介绍了聊聊Python中的浮点数运算不准确问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Django中使用pillow实现登录验证码功能(带刷新验证码功能)

    Django中使用pillow实现登录验证码功能(带刷新验证码功能)

    这篇文章主要介绍了Django中使用pillow实现登录验证码功能(带刷新验证码功能),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • python中终止协程和异常处理方式

    python中终止协程和异常处理方式

    这篇文章主要介绍了python中终止协程和异常处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 快速下载VScode并配置Python运行环境(图文教程)

    快速下载VScode并配置Python运行环境(图文教程)

    本文主要介绍了快速下载VScode并配置Python运行环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • python递归打印某个目录的内容(实例讲解)

    python递归打印某个目录的内容(实例讲解)

    下面小编就为大家带来一篇python递归打印某个目录的内容(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 举例讲解Python的Tornado框架实现数据可视化的教程

    举例讲解Python的Tornado框架实现数据可视化的教程

    这篇文章主要介绍了举例讲解Python的Tornado框架实现数据可视化的教程,Tornado是一个异步的高人气开发框架,需要的朋友可以参考下
    2015-05-05
  • 解读python中的类型提示(type hint)

    解读python中的类型提示(type hint)

    这篇文章主要介绍了解读python中的类型提示(type hint),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Python装饰器详细介绍

    Python装饰器详细介绍

    这篇文章主要介绍了Python @property装饰器的用法,在Python中,可以通过@property装饰器将一个方法转换为属性,从而实现用于计算的属性,下面文章围绕主题展开更多相关详情,感兴趣的小伙伴可以参考一下
    2022-12-12

最新评论