Django基础教程(119)Django认证和权限之实现级别的权限:Django认证与权限——从“门卫”到“保安队长”的终极指南

你是不是也遇到过这种场景:吭哧吭哧搭了个博客,结果谁都能上来删你的心血之作?或者做了一个内部系统,却没法控制谁只能看、谁能改?别慌,Django早就给你准备好了一整套“安保团队”,就看你会不会用了。

今天,咱们就抛开教科书,用最接地气的方式,把这个“保安系统”的指挥权,牢牢抓在自己手里!

第一幕:认识你的“安保团队”——Django认证框架核心成员

在Django的世界里,这套系统主要由三巨头组成:

  1. User(用户):就是咱小区的“住户”。他有最基本的身份信息:用户名、密码、邮箱等等。Django自带一个现成的User模型,开箱即用。
  2. Permission(权限):可以理解为“门禁卡”。每一张卡代表了一个具体的动作,比如 add_blog(发博客)、change_blog(修改博客)、delete_blog(删除博客)、view_blog(看博客)。注意,这通常是模型级别的,意思是“有没有操作所有博客的资格”。
  3. Group(组):相当于“保安小队”。你可以创建不同的组,比如“编辑组”、“审核组”,然后把相应的“门禁卡”(权限)批量分配给这个组。再把用户拉进组里,他就自动拥有了这个组的全部权限。管理起来简直不要太方便!

默认情况下,当你用python manage.py migrate命令后,Django就默默为你创建了这些模型和相关的权限。每当你定义一个新模型(比如Blog),Django都会自动为它生成四种基础权限:增、删、改、查。是不是很贴心?

第二幕:基础权限控制——“小区门卫”的日常工作

现在,我们来点实际的。怎么判断一个用户有没有某个权限呢?

1. 代码层面的检查(视图函数里)

想象一下,用户点击“删除博客”按钮,这个请求会跑到你的视图函数里。在这里,你就是“保安队长”,得核实他的身份。

from django.contrib.auth.decorators import login_required, permission_required
from django.shortcuts import get_object_or_404, redirect
from .models import Blog

# 方法一:使用 @permission_required 装饰器,简单粗暴
@permission_required('myapp.delete_blog')
def delete_blog_old(request, blog_id):
    blog = get_object_or_404(Blog, id=blog_id)
    blog.delete()
    return redirect('blog_list')

# 方法二:在视图内部用 req
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值