django学习之类视图,中间件

一般情况下,我们以函数定义的视图,为函数视图。以类定义的视图叫做类视图。

函数视图便于理解,但是遇到多种http请求时,需要在一个函数中编写不同的业务逻辑。

django学习之类视图,中间件_第1张图片

定义完类视图之后还需要在urls中注册,配合路由时,需要类视图的as_view()方法。

url(r"^register/$", views.Register.as_view()),

2.类视图使用装饰器

给单个方法加装饰器,需要引入method_decorator装饰器。使用method_decorator转换为类视图可用的装饰器,然后将自己定义的装饰器写入其中。如下:

django学习之类视图,中间件_第2张图片

要装饰类视图中的所有方法除了装饰dispatch方法之外还可以在url配置中进行装饰

django学习之类视图,中间件_第3张图片

中间件:1.请求之后,视图函数处理之前;2.视图函数处理之后,返回之前

类似与flask中钩子函数。

定义:利用装饰器形式来写

django学习之类视图,中间件_第4张图片

中间件定义完之后需要在setting中进行注册

django学习之类视图,中间件_第5张图片

注册完中间件之后会对所有的应用视图函数都起作用,不管中间件定义在哪。如下:在classview.middleware.py中定义的my_middleware中间件,调用/users应用下的index方法时,也会起作用。

django学习之类视图,中间件_第6张图片

django学习之类视图,中间件_第7张图片

 

多个中间件注册时的执行顺序:

在请求视图函数前,中间件由上到下;

在请求视图函数后,中间件由下到上;

django学习之类视图,中间件_第8张图片

 

你可能感兴趣的:(django)