Skip to content

admin后台与auth认证

这一节要解决两个非常实际的问题:

  • 后台数据怎么管理
  • 用户登录和权限怎么处理

这也是 Django 非常有代表性的优势所在,因为很多框架要自己从零搭后台和用户系统,而 Django 已经帮你准备好了很成熟的一套能力。

本节目标

  • 理解 Django admin 是什么
  • 学会创建超级管理员账号
  • 学会把模型注册到 admin 后台
  • 理解 auth 认证系统的作用
  • 理解登录状态和权限控制的基础概念

Django admin 是什么

admin 是 Django 自带的后台管理系统。

它的核心价值是:

  • 你不用从零开始写后台页面
  • 就可以先把模型数据管理起来

例如,你有一个 Student 模型,只要注册到 admin 中,通常就能很快在后台里做:

  • 查看数据
  • 新增数据
  • 修改数据
  • 删除数据

这对开发阶段和内部管理非常有帮助。

创建超级管理员账号

命令:

bash
python manage.py createsuperuser

执行后通常会提示你输入:

  • 用户名
  • 邮箱
  • 密码

创建成功后,就可以访问后台地址:

text
http://127.0.0.1:8000/admin/

登录进入 Django 后台。

把模型注册到 admin

假设你有一个模型:

python
from django.db import models


class Student(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()

想让它出现在后台里,就要在 admin.py 中注册:

python
from django.contrib import admin
from .models import Student

admin.site.register(Student)

完成后重新打开 admin,通常就能在后台里看到这个模型对应的数据管理入口。

为什么 admin 很适合初学者

因为在你还没有自己写完整后台页面之前,它就已经能帮你管理数据了。

这意味着:

  • 你可以先专注业务模型和逻辑
  • 不必一开始就花大量时间做后台 UI

所以 admin 经常是 Django 项目初期非常实用的工具。

admin 能做什么

最基础的能力包括:

  • 数据列表展示
  • 新增记录
  • 修改记录
  • 删除记录

随着项目复杂度提升,你还可以继续定制:

  • 列表显示哪些字段
  • 搜索哪些字段
  • 按什么条件过滤

auth 认证系统是什么

auth 是 Django 自带的用户认证系统。

它主要解决这些问题:

  • 用户登录
  • 用户登出
  • 判断用户是否已登录
  • 判断用户是否有权限访问某些内容

这意味着你不用从零写一整套用户认证机制。

为什么认证系统重要

因为真实网站里,不是所有页面都应该公开。

例如:

  • 用户中心只能用户自己看
  • 管理页不是谁都能进
  • 某些操作只有管理员能执行

所以认证系统的本质,是判断“这个请求背后是谁”。

判断用户是否已登录

在视图中常见写法:

python
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 的权限控制就会顺很多。

权限为什么重要

真实项目中,不同用户通常对应不同权限。

例如:

  • 普通用户:只能看自己的内容
  • 管理员:可以管理普通数据
  • 超级管理员:拥有最高权限

不是每个人都应该能修改所有内容。

所以权限控制不是“额外功能”,而是网站安全和业务边界的一部分。

一个简单的权限意识示例

如果你写一个后台删除接口:

python
def delete_student(request):
    ...

你必须思考:

  • 谁可以访问这个接口
  • 是否必须先登录
  • 是否必须是管理员

这就是认证和权限存在的意义。

一个完整的学习主线

你可以把这一节的内容按下面顺序理解:

  1. 模型存在
  2. 模型注册到 admin
  3. 创建管理员账号
  4. 登录后台管理数据
  5. 理解后台依赖 auth
  6. 理解用户登录状态和权限控制

这样思路就不会散。

常见错误

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 登录系统、后台系统和权限管理时,就有了清晰起点。

Built with VitePress.