Django框架学习3

python Django框架学习3

Django框架学习3

本文主要学习讲诉django的URL路由机制和视图(views)响应类型

URL路由机制:

在Django中,工程中的全局路由文件以工程目录下的settings.py文件中的ROOT_URLCONF变量指定,如在 云端留言板中,全局路由如图

全局路由
再来看全局路由文件urls.py中的内容
在这里插入图片描述
其中的urlpatterns变量就表示整个工程中的全局路由
该变量的数据类型为列表,由path()或re_path作为元素内容

Django的URL路由流程

在django中,URL路由流程主要分为四步:

1.django查找全局urlpatterns变量 (urls.py)
2.按照先后顺序,对URL逐一匹配urlpatterns中的每个元素
3.当匹配成功时停止查找,根据匹配结果执行对应的处理函数
4.如果匹配结束后没有匹配成功或出现匹配异常,django会进行错误处理

路由path()于re_path的区别

上面提到,路由主要是以path()和re_path()进行表示
path(route , view)

route参数:路径,由URL字符串组成
view参数:处理(视图)函数或include()类

re_path(route , view)

route参数:路径,由正则表达式组成
view参数:处理(视图)函数或include()类

由此可以得出结论,path()主要处理字符串路由;re_path()主要处理正则表达式路由

现在我们来探寻理解路由函数path()中route

path(route , view , kwargs=None , name=None)
route:URL或URL模式,django定义的URL转换语法
view:处理(视图)函数或include()类
kwargs:向处理函数提供额外的参数,以字典形式表示
name:为URL模式的命名

这里提到django中的转换,在django中主要为

<类型:变量名>
如: aa/2018/ 就会于 aa/< int:year >/相匹配

更多的转换格式类型还有:

str
int
slug
uuid
path

注意点:在路由中route无论是以那种形式来进行表达,末尾要以 / 结尾。

路由中的路径说完了,再来看看对应的处理函数views

views主要形式由:处理函数和include()函数组成如图:
在这里插入图片描述前者是处理函数直接调用函数,后者则是include()函数中调用本地路由实现跳转调用对应函数

include()函数具体实现:
在新建的app中同样包含一个urls.py文件,在此文件中,我们实现本地路由,
在这里插入图片描述然后在同工程名app下的urls.py文件中引用,实现全局路由与本地路由的关联。

视图响应类型:

视图函数接受http请求并返回响应,我们为了后期对工程的维护,主要把编写的视图函数写在app中的views.py文件中。视图函数可以返回web文本、页面、重定向、错误、图片等任何内容。视图函数主要是通过HttpResponseJsonResponse等类表达并响应。

视图响应不区分GET和POST请求。但能通过

@require_http_methods([’’])

来对请求类型进项过滤

django的响应类型

1.HttpResponse类及其子类
2.JsonResponse类
3.StreamingHttpResponse类
4.FileResponse类

HttpResponse类

HttpResponseRedirect
构造函数的参数有一个:重定向的路径。 它可以是一个完整的URL(例如, ‘http://search.yahoo.com/’ )或者不包括域名的绝对路径(如 ‘/search/’ )。 注意它返回 HTTP 状态码 302。

HttpResponsePermanentRedirect
类似 HttpResponseRedirect , 但是它返回一个永久转义 (HTTP状态码 301),而不是暂时性转移(状态码302)。

HttpResponseNotModified
构造函数没有任何参数。用它来表示这个页面在上次请求后未改变。

HttpResponseBadRequest
类似 HttpResponse ,但使用400状态码。

HttpResponseNotFound
类似 HttpResponse ,但使用404状态码。

HttpResponseForbidden
类似 HttpResponse ,但使用403状态码。

HttpResponseNotAllowed
类似 HttpResponse ,但使用405状态码。它必须有一个参数:允许方法的列表。(例如, [‘GET’, ‘POST’] )。

HttpResponseGone
类似 HttpResponse ,但使用410状态码。

HttpResponseServerError
类似 HttpResponse ,但使用500状态码。

实例:在这里插入图片描述

JsonResponse类

返回JsonResponse(data)

实例:
在这里插入图片描述
StreamingHttpResponse类

StreamingHttpResponse是将文件内容进行流式传输,数据量大可以用这个方法

FileResponse类

FileResponse(stream)
stream:以流打开的文件
主要是在web端下载文件时使用此类

总结:

这篇短文主要介绍了django框架中路由机制视图响应的类型

路由机制:怎么样匹配路由?路径的书写、路径的转换格式?处理函数的两中表达形式?

视图响应的类型:一共有多少返回类型?各类型对应那些不同的事物处理?视图响应区分GET和POST的请求方式吗?可以用上面方式来处理不同的请求方式?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值