Django+登录验证+中间件

对于django的学习不是特别的深刻,有很多不足之处还望包涵,废话不多说,现在来说说Django的登录验证。
例如:登录验证是指我们要访问某个学校的学生信息的话,我们要登录学生信息的管理系统之后才能访问学生的信息。如果你没有登录的话,你的request请求直接请求学生的信息的url的话,不会访问到学生的信息,会直接跳到登录界面,要求你登录才能访问。
实现登录验证我们有两种方式:

第一种:在django中提供一种自定义装饰器@login_required来验证用户登录:
Django+登录验证+中间件_第1张图片
通过这种方式我们可以达到用户登录验证的效果,这里也可以有另一种写法,我们可以直接把@login_required写到视图方法的上面进行装饰如图此图转自tianrs的博客
Django+登录验证+中间件_第2张图片
但是这种方式有一个不方便的地方,如果我们有大量的视图方法都需要登录验证的话,这样我们在每个视图方法上面都要添加@login_required,而且当需求变化的话,可能会删除装饰器,这种工作量会比较麻烦。
所以在学习的过程中老师讲了三种登录验证的方式,但是有一种是通过条件判断,在每个需要登录验证的视图方法前面写if条件判断语句,这种方法是一种很坏的味道(做了很多重复的事情,重复是最坏的一种味道),这种方法就不写了。
然后我们来说第二种方法:
通过中间件来进行登录验证用中间件来验证的话,我们需要在setting.py文件中设置参数:
Django+登录验证+中间件_第3张图片
然后在创建一个中间件模块,将中间件添加到上面的setting.py文件中去,在中间件模块中定义process_request函数,对登录的url进行验证:
Django+登录验证+中间件_第4张图片

Django的中间件是很方便的,当需要对所有的request进行相同的处理是,可以使用中间件进行处理,很方便。可能大家觉得装饰器可能更简单写起来,但是对于中间件肯定还有更强大的处理request的能力,只是我不知道而已。还需多多了解。

你可能感兴趣的:(python,Django)