Django路由机制

什么是路由

对一个给定的URL进行定义,转换,传参,命名之后,找到相应处理函数的过程,也就是关联URL和处理函数的过程。

Django的路由配置

在settings.py文件中ROOT_URLCONF变量指定了全局路由文件名称。也就是工程的入口路由文件。

ROOT_URLCONF = "<工程名称>.urls"

在urls.py文件中使用urlpatterns变量表示路由,该变量是列表类型,元素由path()或re_path()组成。

path()处理字符串路由。re_path()处理正则表达式路由。

Django的路由流程

1.查找全局路由文件中的urlpatterns变量

2.根据先后顺序,对URL逐一匹配urlpatterns中的元素。

3.找到第一个匹配的元素后,将停止查找,并根据匹配结果执行处理函数。

4.如果没有找到匹配,或者出现异常。Django将进行错误处理。

注:Django路由不考虑HTTP请求方式,只根据URL进行路由,只要URL相同,无论是POST或者GET都会指向同一个处理函数。但是可以通过decorators在处理函数前进行基本判断。

from django.views.decorators.http import require_http_methods

@require_http_methods(["GET", "POST"])
def index(request):
	pass

路由函数path()

函数path()有四个参数;两个必须参数:route和view;两个可选参数:kwargs和name。

route:URL匹配模式,当Django相应一个请求时,会从urlpatterns的第一项开始根据route匹配元素。

view:处理函数的名称,当Django找到一个匹配模式后,会调用这个处理函数,并传入一个HttpRequest对象。

kwargs:任意个关键字参数可以作为一个字典传递给目标处理函数。

name:给URL模式的命名。

route的三种格式

1. 精确字符串格式,类似于:articles/2003/

一个精确的URL匹配一个处理函数,适合于对静态URL的响应。

2. Django的转换格式,类似于:articles/<int:year>/

一个URL模板,匹配URL的同时,在其中获取一批变量作为参数传递给处理函数。


3. 正则表达式格式。类似于:articles/?P<year>[0-9]{4}/

借助正则表达式的丰富语法,可以表达一类URL(不是一个),可以通过<>提取变量作为处理函数的参数。  

view的两种类型

1.处理函数。

2.include()函数。包含其他路由信息,分段路径组合形成总路径。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值