用Django全栈开发——23. 增加访问权限以及404页面

大家好,这是皮爷给大家带来的最新的学习Python能干啥?之Django教程,从零开始,到最后成功部署上线的项目。这一节,我们将写404页面。

皮爷的每一篇文章,都配置相对应的代码。这篇文章的代码Tag是Post_023

在这里插入图片描述

前几节,我们就针对网站的功能,进行了开发,其实基本功能已经完成的差不多了,这一节,我们就要针对网站的权限进行一下管理。

权限管理分析

为什么需要权限管理?

原因就是我们在第11讲的时候,开发了Login功能,当时我们创建了管理员账号,并且随后的章节,我们开发了后台管理系统。

虽然我们有管理员账号,也有登录功能,但是细心的同学,就会发现,我们之前开发的CMS系统,其实不用登录也能使用的。

这就是Bug啊,这就是问题啊,如果上线正式环境了,你的系统岂不是随随便便就让别人登录后台了,而且还能管理你的文章?

那么今天,我们就要给CMS系统,加上权限,使得用户必须登录了才能使用CMS系统,如果没有登录,是不能使用的。

原理详解

如果一个页面,没有登录,那么就不能访问。可以实现这样功能的东西,应该就只有request了。

各位不知道注意没有,每一次我们在写视图函数的时候,不管是post方法还是get方法,或者是其他方法,都要传入一个request参数,而且是必传的。其实,这里的request,就是WSGIRequest类:

在这里插入图片描述

他是继承自django.http.HttpRequest类,这个类的官方文档:

https://docs.djangoproject.com/en/3.0/ref/request-response/

针对我们,如果要实现用户登录之后才能访问,那么我们就可以看到,HttpRequest里面有一个变量,叫user。我们就可以拿这个变量来做判断。

核心的代码,其实就是下面这段:

if request.user.is_authenticated:
    ... # Do something for logged-in users.
else:
    ... # Do something for anonymous users.

我们要通过修饰器的方式来实现权限管理。什么是修饰器?就是在一个方法前面,通过@xxx来写的修饰器。用来修饰整个方法。

登出方法

我们之前的Login页面有登录方法,我们还需要写一个登出方法,并且放到CMS顶部的Navbar上面。

def logout_view(request):
  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值