Django零基础入门之路由path和re_path详解

 更新时间:2021年09月02日 12:02:58   作者:孤寒者  
这篇文章主要介绍了Django零基础入门之路由path和re_path,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

假设现在有个需求:
  需要通过URL进行参数传递,我们该怎么做呢?
    其中有个方法就是本文要讲的内容——path和进阶版的re_path。

urls.py文件中的path和re_path

1.path的基本规则:

path('test/<xx>/',views.test)

第一个参数——test/<xx>/:使用尖括号(<>)从url中捕获值。包含一个转化器类型(converter type)。没有转化器,将匹配任何字符串,当然也包括了/字符。

第二个参数——views.test:当前面的url匹配成功后,就会调用后面的视图函数。

但是有个问题就是使用尖括号从url中捕获的值默认都是str类型,如果我们需要强制要求其为别的类型(比如:int型)该怎么办呢?

这就用到了转换器!!!

2.默认支持的转换器有:

str:匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式<str:xx>int:匹配正整数,包含0。slug:匹配字母、数字以及横杠、下划线组成的字符串。uuid:匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。(这是唯一的!)path:匹配任何非空字符串,包含了路径分隔符 转换器的作用:默认是str转换器:所以如果不设置转换器,那么接收到的一切值都是str字符串格式,如果要改变这个参数类型就使用到了转换器!

需要注意的是:path中设置的参数名需要和视图函数中调用的参数名一致!!!

在这里插入图片描述

一般情况下,使用path即可匹配我们想要的url中的参数。但是,如果要匹配的过于复杂,使用path中的转换器无法解决的时候,就要使用到re_path(实则是使用正则匹配!)

3.re_path正则匹配:

如果不做任何限制,浏览器中输入的ULR的地址参数可以任意多,只要包括规定的路径即可成功匹配!
——比如:re_path('hello',views.test5),输入路径:127.0.0.1:8000/aaahelloaaaa都可成功匹配哦!

如果想限制为何path一样的效果——URL中的路径必须一模一样,否则匹配不到,则需要使用正则语法:
——比如:re_path('^hello/$',views.test5),就只有输入路径127.0.0.1:8000/hello/才可成功匹配!

Django中实战使用path和re_path

1.urls.py文件:

"""dj_test URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path,re_path                    #导入re_path,使用正则
from . import views

urlpatterns = [     #主路由
    path('admin/', admin.site.urls),
    path('test/', views.test),    #路径  关联的视图

    path('test2/<name>/<int:age>/', views.test2),       #变量默认接收的是字符串形式    改变格式是通过转换器  <int:age>规定所接收的类型为int型


    re_path('^test3/(?P<bb>[0-9]+)',views.test3)	  # 注意这个格式:test3是路径固定参数, bb是可以接受路径中test3/后面参数的参数(任意0-9的数字)!
]

2.views.py视图函数文件:

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
#视图操作

def test(request):   #函数视图
    return HttpResponse("这里是帅哥")

#url传参(url参数)
def test2(request,name,age):   #函数视图
    return HttpResponse("我叫%s,今年%s岁"%(name,age))

def test3(request,bb):   #函数视图
    return HttpResponse("哈哈哈")

3.效果:

在这里插入图片描述

在这里插入图片描述

到此这篇关于Django零基础入门之路由path和re_path详解的文章就介绍到这了,更多相关Django path re_path内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python解决八皇后问题示例

    Python解决八皇后问题示例

    这篇文章主要介绍了Python解决八皇后问题,简单描述了八皇后问题的原理并结合实例形式分析了Python基于递归算法解决八皇后问题的相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • Python 文档解析lxml库的使用详解

    Python 文档解析lxml库的使用详解

    lxml 是 Python 常用的文档解析库,能够高效地解析 HTML/XML 文档,常用于 Python 爬虫,这篇文章主要介绍了Python 文档解析:lxml库的使用,需要的朋友可以参考下
    2022-09-09
  • 浅谈anaconda python 版本对应关系

    浅谈anaconda python 版本对应关系

    这篇文章主要介绍了浅谈anaconda python 版本对应关系,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • python中的关键字参数*args和**kwargs详解

    python中的关键字参数*args和**kwargs详解

    这篇文章主要介绍了python中的关键字参数*args和**kwargs详解,在定义类或函数时,有时候会用到*args和**kwargs,前者叫位置参数,后者叫关键字参数,需要的朋友可以参考下
    2023-11-11
  • python中用Scrapy实现定时爬虫的实例讲解

    python中用Scrapy实现定时爬虫的实例讲解

    在本篇文章里小编给大家整理的是一篇关于python中用Scrapy实现定时爬虫的实例讲解内容,有兴趣的朋友们可以学习下。
    2021-01-01
  • 你喜欢篮球吗?Python实现篮球游戏

    你喜欢篮球吗?Python实现篮球游戏

    今天带大家学习的是关于Python的相关知识,文章围绕着Python如何实现篮球游戏展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • python 切片和range()用法说明

    python 切片和range()用法说明

    首先需要明白,可迭代对象,按照正数索引(正序)是从0开始的,按照负数索引(逆序)是从-1开始的
    2013-03-03
  • Python continue继续循环用法总结

    Python continue继续循环用法总结

    本篇文章给大家总结了关于Python continue继续循环的相关知识点以及用法,有需要的朋友跟着学习下吧。
    2018-06-06
  • pyinstaller pathex参数引发打包no module name异常

    pyinstaller pathex参数引发打包no module name异常

    这篇文章主要为大家介绍了一个关于pyinstaller的 pathex 参数所引发的打包执行报no module name的异常错误解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python与sqlite3实现解密chrome cookie实例代码

    python与sqlite3实现解密chrome cookie实例代码

    这篇文章主要介绍了python与sqlite3实现解密chrome cookie实例代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01

最新评论