第4章 第31课
DjangoCMS用户信息管理系统实战:从零到一的开发手记
1. 课程目标与简介
作为大四学长,我用Django做过3个校内管理系统(图书馆预约、实验室设备借用等)。这次带大家用Django搭建一个轻量级用户信息管理系统,目标很直接:
- ✅ 学什么:Django基础 + CMS开发思维
- ✅ 做什么:实现带增删改查的用户管理系统(类似教务系统后台)
- ✅ 为什么实用:毕业设计/社团管理/实习项目都能复用这套代码
# 举个需求场景:假设你是学生会技术部成员
# 部长说:“做个报名系统,要能审核人员信息!”
# 这就是本项目要解决的核心问题 (๑•̀ㅂ•́)و✧
2. 项目简介:DjangoCMS用户管理系统
核心功能拆解(用学生活动管理举例):
- 欢迎页:用户访问
127.0.0.1:8000
显示“招新系统入口” - 主页:点击后跳转到管理面板(显示报名统计)
- 用户列表页:查看所有报名成员(姓名+学号+部门)
- 增删改查:审核报名信息时修改部门/删除重复报名
# 举个校园案例:
# 欢迎页 → 招新宣传页(“欢迎加入学生会!”)
# 用户列表页 → 报名人员后台([张三|20221101|宣传部])
# 增删改 → 把张三从“宣传部”调到“技术部”
3. 实战流程:五步搞定项目
步骤1:新建App → 创建独立功能模块
# 终端命令(在项目目录下)
python manage.py startapp user_manager# 创建名为user_manager的APP
步骤2:欢迎页 → 简单的页面渲染
# user_manager/views.py
from django.shortcuts import render
def welcome(request):
return render(request, 'welcome.html')# 返回欢迎页
# user_manager/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.welcome, name='welcome'),# 绑定根路径
]
# templates/welcome.html
<h1>学生会招新系统</h1>
<a href="{% url 'home' %}">进入管理后台</a><!-- 跳转到主页 -->
步骤3:主页 → 跳转中枢
# views.py 新增
def home(request):
return render(request, 'home.html')
# urls.py 追加
path('home/', views.home, name='home'),
# templates/home.html
<a href="{% url 'welcome' %}">返回欢迎页</a>
<a href="{% url 'user_list' %}">查看报名名单</a><!-- 关键跳转链接 -->
步骤4:用户列表页 → 动态数据展示
# models.py(核心:定义数据库结构)
class UserInfo(models.Model):
name = models.CharField("姓名", max_length=20)# 字段注释会显示在后台
student_id = models.CharField("学号", max_length=12)
department = models.CharField("部门", max_length=50)
# views.py
def user_list(request):
users = UserInfo.objects.all()# 获取所有用户数据
return render(request, 'user_list.html', {'users': users})
# user_list.html
{% for user in users %}
<p>{{ user.name }}|{{ user.student_id }}|{{ user.department }}</p>
{% endfor %}
步骤5:增删改查 → 实现数据操作
# 以删除为例(views.py)
def delete_user(request, user_id):
user = UserInfo.objects.get(id=user_id)
user.delete()
return HttpResponseRedirect(reverse('user_list'))# 删完跳回列表页
# 前端调用(user_list.html)
<a href="{% url 'delete_user' user.id %}">删除</a>
# 注意:实际项目需要加权限验证和POST请求防护!
4. 技术要点解析
① HTML页面存放
- 所有模板放
templates
目录 - 坑点:需在
settings.py
配置路径才能识别
# settings.py 关键配置
TEMPLATES = [
{
'DIRS': [os.path.join(BASE_DIR, 'templates')],# 添加这行
},
]
② 页面跳转的两种方式
- 硬编码:
<a href="/home/">
(不推荐,路径改动会失效) - 动态路由:
<a href="{% url 'home' %}">
(使用URL命名,避免路径耦合)
③ 视图函数核心响应方式
# 三种常用响应(views.py)
return HttpResponse("纯文本内容")# 显示字符串
return render(request, 'xx.html')# 渲染模板
return HttpResponseRedirect("/path/")# 重定向跳转
④ 表单安全必加项
<!-- 任何POST表单必须加!否则报403错误 -->
<form method="post">
{% csrf_token %}<!-- 防跨站攻击令牌 -->
<input type="text" name="department">
<button>提交</button>
</form>
⑤ 数据库动态化实战技巧
# 修改主页:显示实时报名人数(home.html)
<p>当前报名人数:{{ user_count }}</p>
# views.py 改进home函数
def home(request):
user_count = UserInfo.objects.count()# 动态统计
return render(request, 'home.html', {'user_count': user_count})
5. 项目总结:学长踩坑心得
- 开发顺序:先建Model → 再写View → 最后做Template(数据驱动页面)
- 调试神器:
print(request.POST)
# 查看表单数据- Django Debug Toolbar# 实时SQL监控
- 典型错误:
- 页面404 → 检查
urls.py
的路由命名 - 数据库无数据 →
python manage.py makemigrations
+migrate
- 扩展方向:
- 加登录验证:
django.contrib.auth
- 分页功能:
from django.core.paginator import Paginator
最终代码已上传GitHub(搜索 Django-User-CMS),包含完整增删改查和样式优化。遇到问题欢迎Issue,48小时内必回 —— 毕竟帮学弟学妹 debug 是学长的义务嘛 (•̀ω•́)✧
# 项目启动终极命令
python manage.py runserver# 浏览器打开http://127.0.0.1:8000
感谢浏览和学习,作者:鱼油YOU,转载请注明原文链接:https://www.cnblogs.com/OmegaYOU3/p/19021306,或者可以➕主播WX:OmegaAnimeman_desu;QQ:3819054512