Django路由Path方法的实现

 更新时间:2023年07月12日 11:53:47   作者:以山河作礼。  
本文主要介绍了Django路由Path方法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

path()方法

path 函数来进行路由的匹配,可通过以下方式进行导入:

#新的2.x版本导入path,导入简化
from django.urls import path
#原来的1.x版本url方式,conf子包
from django.conf.urls import url

但是之前的 url 模块并没有废止,只是 Django 强烈建议我们使用新模块 path 进行路由的匹配。

path方法函数定义

path 函数在 Django中的的定义如下所示:

path(route, view, kwargs, name)

它可以接收 4 个参数,其中前两个是必填参数后两个为可选参数。参数解析如下:

  • route:是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项,然后执行该项映射的视图函数或者 include 函数分发的下级路由,因此,url 路由的编写在 Django中十分的重要!
  • view:指的是处理当前 url 请求的视图函数。当 Django 匹配到某个路由条目时,自动将封装的 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式,传递给该条目指定的视图函数。
  • kwargs:指使用字典关键字传参的形式给关联的目标视图函数传递参数。
  • name:给 URL 起个别名,常用于 url 的反向解析,避免在模板中适应硬编码的方式使用嵌入 url,在后续章节会进行详细讲解。

下面是一个使用path()方法的示例:

from django.urls import path
from . import views
urlpatterns = [
    path('articles/<int:year>/', views.article_year),
]

这个示例定义了一个路由,将请求的URL路径中的年份参数传递给名为article_year的视图函数。在视图函数中,可以通过request对象的year属性来获取年份参数的值。

当使用 path 方法关联视图函数时与 url 方法相比更为简化,也更容易让初学者理解。

path 方法引入了类型转化器(converter type)的概念,以此省去了较为复杂的正则表达式匹配路由的方法。

实例说明如下:

#1.x url方法
url(r'^test/(?P<year>[0-9])/$', views.year_test),
#2.x path方法
path('test/<int:year>/', views.year_test),

int 支持整数类型的转化,在上述的例子中, year_test 函数接收到的 year 参数就变成整数而不是字符串,从而避免在视图中使用year=int(year)。

path 函数定义的<int:year>规则会捕获到 URL 中的值,映射给视图中的同名参数 year,并根据转换器将参数值转换为指定的类型,这里对应 int 大于等于 0 的整数。

之所以使用转化器,有以下两个原因:

  • 第一是可以将捕获到的字符值转换为对应的类型;
  • 第二是对 URL 中传值的一种限制,避免视图处理出错;

path方法类型转化器

Django 默认支持 5 个类型转换器,在大多数情况下,绝对可以满足我们的正常业务需求,如果不能,Django 同样提供了自定义转换器。

下面介绍 Django 默认支持的转换器,如下所示:

  • str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式;
  • int,匹配正整数,包含0;
  • slug,匹配字母、数字以及横杠、下划线组成的字符串;
  • uuid,匹配格式化的 uuid,如 075194d3-6885-417e-a8a8-6c931e272f00;
  • path,匹配任何非空字符串,包含了路径分隔符。

re_path正则表达式匹配

Django 2.x 之后也支持我们使用正则表达式来捕获值,在这里需要使用 re_path()。我们使用带命名的正则表达式分组,语法如下:

(?P<name>pattern) 

其中,尖括号里的name为分组名,pattern为正则表达式。re_path()同样包含于django.urls模块中,所以同样使用如下方式进行导入。示例如下:

from django.urls import path, re_path  #导入re_path
from . import views
urlpatterns = [
    re_path('test/(?P<year>[0-9]{4})/', views.year_test),
    re_path('test/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/', views.month_test)]

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

相关文章

  • python命令 -u参数用法解析

    python命令 -u参数用法解析

    这篇文章主要介绍了python命令 -u参数用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python入门教程(十九)python的函数详解

    Python入门教程(十九)python的函数详解

    这篇文章主要介绍了Python入门教程(十九)python的函数,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,需要的朋友可以参考下
    2023-04-04
  • 利用python实现简单的情感分析实例教程

    利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Python+Pygame实现趣味足球游戏

    Python+Pygame实现趣味足球游戏

    这篇文章主要为大家分享了一个基于Python和Pygame实现的一个趣味足球游戏,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考一下
    2022-05-05
  • Django app配置多个数据库代码实例

    Django app配置多个数据库代码实例

    这篇文章主要介绍了Django app配置多个数据库代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python中sorted()函数的强大排序技术实例探索

    Python中sorted()函数的强大排序技术实例探索

    排序在编程中是一个基本且重要的操作,而Python的sorted()函数则为我们提供了强大的排序能力,在本篇文章中,我们将深入研究不同排序算法、sorted() 函数的灵活性,以及各种排序场景下的最佳实践
    2024-01-01
  • 基于asyncio 异步协程框架实现收集B站直播弹幕

    基于asyncio 异步协程框架实现收集B站直播弹幕

    本文给大家分享的是基于asyncio 异步协程框架实现收集B站直播弹幕收集系统的简单设计,并附上源码,有需要的小伙伴可以参考下
    2016-09-09
  • Python使用Beautiful Soup包编写爬虫时的一些关键点

    Python使用Beautiful Soup包编写爬虫时的一些关键点

    这篇文章主要介绍了Python使用Beautiful Soup包编写爬虫时的一些关键点,文中讲到了parent属性的使用以及soup的编码问题,需要的朋友可以参考下
    2016-01-01
  • tensorflow 大于某个值为1,小于为0的实例

    tensorflow 大于某个值为1,小于为0的实例

    这篇文章主要介绍了tensorflow 大于某个值为1,小于为0的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 使用Python实现从麦克风获取音频并识别

    使用Python实现从麦克风获取音频并识别

    这篇文章主要为大家详细介绍了如何使用Python实现从麦克风获取音频并识别功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02

最新评论