admin后台与auth认证
这一节要解决两个非常实际的问题:
- 后台数据怎么管理
- 用户登录和权限怎么处理
这也是 Django 非常有代表性的优势所在,因为很多框架要自己从零搭后台和用户系统,而 Django 已经帮你准备好了很成熟的一套能力。
本节目标
- 理解 Django admin 是什么
- 学会创建超级管理员账号
- 学会把模型注册到 admin 后台
- 理解 auth 认证系统的作用
- 理解登录状态和权限控制的基础概念
Django admin 是什么
admin 是 Django 自带的后台管理系统。
它的核心价值是:
- 你不用从零开始写后台页面
- 就可以先把模型数据管理起来
例如,你有一个 Student 模型,只要注册到 admin 中,通常就能很快在后台里做:
- 查看数据
- 新增数据
- 修改数据
- 删除数据
这对开发阶段和内部管理非常有帮助。
创建超级管理员账号
命令:
python manage.py createsuperuser执行后通常会提示你输入:
- 用户名
- 邮箱
- 密码
创建成功后,就可以访问后台地址:
http://127.0.0.1:8000/admin/登录进入 Django 后台。
把模型注册到 admin
假设你有一个模型:
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=50)
age = models.IntegerField()想让它出现在后台里,就要在 admin.py 中注册:
from django.contrib import admin
from .models import Student
admin.site.register(Student)完成后重新打开 admin,通常就能在后台里看到这个模型对应的数据管理入口。
为什么 admin 很适合初学者
因为在你还没有自己写完整后台页面之前,它就已经能帮你管理数据了。
这意味着:
- 你可以先专注业务模型和逻辑
- 不必一开始就花大量时间做后台 UI
所以 admin 经常是 Django 项目初期非常实用的工具。
admin 能做什么
最基础的能力包括:
- 数据列表展示
- 新增记录
- 修改记录
- 删除记录
随着项目复杂度提升,你还可以继续定制:
- 列表显示哪些字段
- 搜索哪些字段
- 按什么条件过滤
auth 认证系统是什么
auth 是 Django 自带的用户认证系统。
它主要解决这些问题:
- 用户登录
- 用户登出
- 判断用户是否已登录
- 判断用户是否有权限访问某些内容
这意味着你不用从零写一整套用户认证机制。
为什么认证系统重要
因为真实网站里,不是所有页面都应该公开。
例如:
- 用户中心只能用户自己看
- 管理页不是谁都能进
- 某些操作只有管理员能执行
所以认证系统的本质,是判断“这个请求背后是谁”。
判断用户是否已登录
在视图中常见写法:
from django.http import HttpResponse
def profile(request):
if request.user.is_authenticated:
return HttpResponse("你已经登录")
else:
return HttpResponse("你还没有登录")这里的关键点是:
request.user表示当前请求关联的用户is_authenticated用来判断用户是否已认证
admin 和 auth 的关系
这两个系统不是分开的。
admin 本身就是建立在 auth 之上的。
也就是说:
- 你能登录 admin
- 本质上依赖的也是 Django 的认证系统
所以你理解了 auth,再看 admin 的权限控制就会顺很多。
权限为什么重要
真实项目中,不同用户通常对应不同权限。
例如:
- 普通用户:只能看自己的内容
- 管理员:可以管理普通数据
- 超级管理员:拥有最高权限
不是每个人都应该能修改所有内容。
所以权限控制不是“额外功能”,而是网站安全和业务边界的一部分。
一个简单的权限意识示例
如果你写一个后台删除接口:
def delete_student(request):
...你必须思考:
- 谁可以访问这个接口
- 是否必须先登录
- 是否必须是管理员
这就是认证和权限存在的意义。
一个完整的学习主线
你可以把这一节的内容按下面顺序理解:
- 模型存在
- 模型注册到 admin
- 创建管理员账号
- 登录后台管理数据
- 理解后台依赖 auth
- 理解用户登录状态和权限控制
这样思路就不会散。
常见错误
1. 创建了超级管理员,但忘了先迁移数据库
如果认证相关表还没建好,很多 auth 和 admin 功能都不能正常工作。
2. 模型写了,但没注册到 admin
这样后台里当然看不到对应数据入口。
3. 把 admin 当成面向最终用户的完整后台
admin 更适合开发和内部管理,不一定适合直接作为正式业务后台给普通用户使用。
4. 不理解“登录”和“权限”是两回事
用户已经登录,不代表他就一定有权做所有操作。
练习题
练习 1
创建一个超级管理员账号,并成功登录 /admin/。
练习 2
把你自己定义的模型注册到 admin 后台。
练习 3
写一个视图,用 request.user.is_authenticated 判断用户是否登录。
练习 4
自己解释:为什么后台管理系统必须依赖认证机制。
练习 5
自己总结:普通用户、管理员、超级管理员的权限差别可能体现在哪些地方。
本节小结
Django 的 admin 和 auth 之所以重要,是因为它们帮你快速解决了两个网站开发中非常核心的问题:
- 数据怎么管理
- 用户怎么认证和控制权限
你这一节最重要的收获应该是:
- 会创建管理员账号
- 会把模型注册到后台
- 知道 admin 是什么
- 知道 auth 是什么
- 知道登录状态和权限控制为什么重要
只要这一层理解清楚,后面你再做 Django 登录系统、后台系统和权限管理时,就有了清晰起点。