还在手写用户登录注册?别闹了,Django自带的那套认证机制,香到让你想哭!
作为一个(自认为)成熟的Web开发者,我曾经在用户认证这个坑里躺平了无数次。每次新项目开工,都要重新写一遍用户登录、注册、密码重置的代码,写得我怀疑人生——这玩意儿就不能一次写好,终身受用吗?
直到我遇见了Django的Auth模块,好家伙,原来大佬早就帮我们把路铺好了!今天,就让我带你深度扒一扒Django的用户认证系统,保准让你直呼“真香”!
01 先别急着写代码,理解Django的认证哲学
Django的设计者绝对是贴心小棉袄。他们知道,几乎每个Web应用都需要用户系统,所以干脆把这一整套东西都打包好了,美其名曰“认证框架”。
这个框架主要解决三个灵魂问题:
- 你是谁?(认证 Authentication)
- 你能干啥?(权限 Permissions)
- 你是不是还在?(会话 Session)
Django用一个统一的django.contrib.auth模块,把这些功能全都承包了。咱们要做的,就是理解它、爱上它、然后用好它。
02 扒开Django的认证工具箱,看看里面都有啥宝贝
User模型:你的数字身份证
每个来你网站的人,在Django眼里都是一个User对象。这哥们儿自带了这些基本信息:
from django.contrib.auth.models import User
# 看看User模型都有啥字段
user = User.objects.get(username='老王')
print(user.username) # 用户名
print(user.email) # 邮箱
print(user.first_name) # 名
print(user.last_name) # 姓
print(user.password) # 加密后的密码(注意:不是明文!)
print(user.is_staff) # 是不是管理员
print(user.is_active) # 账号是否激活
print(user.is_superuser) # 是不是超级用户
最妙的是,Django在背后默默做了很多安全措施。比如密码从来不以明文存储,而是用PBKDF2算法加密,想破解?门都没有!
Group和Permission:你的权限管理系统
想象一下,你的网站有普通用户、VIP用户、管理员……不同的人该有不同的权限。Django用Group(用户组)和Permission(权限)来解决这个问题。
from django.contrib.auth.models import Group, Permission
# 创建用户组
vip_group, created = Group.objects.get_or_create(name='VIP用户')
# 给组分配权限
add_blog_perm = Permission.objects.get(codename='add_blog')
vip_group.permissions.add(add_blog_perm)
# 把用户加入组
user.groups.add(vip_group)
这样,属于VIP组的用户自动就有了发布博客的权限,多优雅!
authenticate()和login():认证界的黄金搭档
这是Django认证流程的核心CP:
from django.contrib.auth import authenticate, login
def my_login_view(request):
# 验证用户凭据
user = authenticate(request, username='老王', password='我的密码

最低0.47元/天 解锁文章

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



