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

江岸
江岸
发布时间:2026-10-15 | 5人浏览过
原创

本文详解Django中path与re_path的路由配置方法。介绍path的尖括号捕获值及内置转换器(str, int, slug, uuid)的使用,解决参数类型转换问题。针对复杂匹配需求,讲解re_path结合正则表达式的用法,并通过urls.py与views.py的完整代码示例,演示如何从URL中获取并处理不同类型的参数。

在Web开发中,经常需要通过URL传递参数。实现这一功能的关键技术包括Django提供的path和更高级的re_path。

urls.py文件中的path和re_path

1.path的基本规则:


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

第一个参数——test/<xx>/:利用尖括号(<>)从URL中捕获值,并可指定转化器类型。若未指定转化器,则匹配任意字符串(包含斜杠字符)。

第二个参数——views.test:当URL前缀匹配成功后,系统将调用对应的视图函数。

然而,通过尖括号捕获的URL参数默认均为字符串类型。若需强制指定其他类型(如整数型),该如何处理?

此时需要使用转换器。

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

str:匹配除路径分隔符(/)外的非空字符串,此为默认形式<str:xx>。int:匹配正整数,包含0。slug:匹配由字母、数字、横杠或下划线组成的字符串。uuid:匹配格式化的UUID,例如 075194d3-6885-417e-a8a8-6c931e272f00(具有唯一性)。转换器的作用在于:默认情况下参数类型为str,若不设置转换器,接收到的所有值均为字符串格式;如需改变参数类型,则必须使用转换器。

注意:path中设置的参数名必须与视图函数中定义的参数名保持一致。

通常情况下,使用path即可满足URL参数匹配需求。但当匹配逻辑过于复杂,path中的转换器无法解决时,则需使用re_path(实质是利用正则匹配)。

3.re_path正则匹配:

若不做任何限制,浏览器输入的URL地址参数只要包含规定路径即可成功匹配。例如: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 相关产品和应用

全部下载

专题列表