兄弟们,姐妹们,各位在代码世界里摸爬滚打的卷王们,今天咱们不聊风花雪月,就来唠唠Django里那个既熟悉又陌生的家伙——用户认证与权限。
你肯定遇到过这种场景:Django自带的User模型,就像学校发的基础款校服,穿是能穿,但你想别个胸针、画个涂鸦,搞点个性化?对不起,规矩不允许。它只给了你用户名、密码、邮箱这些基础字段,当你老板拍着你的肩膀说:“小张啊,咱们的用户得有个性签名、上传个头像,再来个微信ID吧……”
你瞬间懵了,内心OS:这破User模型,它不顶用啊!
别急,今天这篇深度“解剖”文,就是你的救命稻草。我们将化身“代码整形师”,给这个“光杆司令”User模型来一次彻头彻尾的“扩列”(扩充字段),并附上权限管理的“尚方宝剑”。全程高能,保证你看完能从“小白”秒变“老司机”,在项目里轻松拿捏用户系统。
第一幕:为啥不能将就?——Django自带User的“先天不足”
Django自带的django.contrib.auth.models.User,确实是个开箱即用的好同志。但它有个最大的“毛病”:字段太少,不够“社会”。
它默认只有:
username(用户名)first_name&last_name(名和姓,老外那套)email(邮箱)password(密码)groups&user_permissions(组和权限,核心!)is_staff&is_superuser(员工标识和超级管理员)- 还有几个状态标识位。
看出来了吗?没有手机号!没有头像!没有昵称!更没有咱们中国人爱用的微信OpenID!
你要是硬着头皮直接改源码,那无异于“代码自杀”,版本一升级,全完犊子。所以,扩展,是唯一的出路。
第二幕:三大“整形”方案,总有一款适合你
给User模型“动刀子”,主要有三大流派,各有各的绝活。
方案一:Proxy模型——玩一手“影分身之术”
这招最轻量,属于“换汤不换药”。它不创建新表,只是给原来的User模型创建一个“代理”,让你可以改变它在后台的管理行为,或者给它加点自定义的方法。
啥时候用?
当你只是想给User模型增加点自定义的管理器方法或者改变后台显示方式,而不需要新增字段时。
代码示例:给User模型加个“00后”判断方法
# models.py
from django.contrib.auth.models import User
cl

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



