🌀 鱼油のB10g

✦ 不定期更新技术随想

✦ 分享奇妙发现

📌 近期动态:

探索AI和工具使用...

第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. 项目总结:学长踩坑心得

  1. 开发顺序:先建Model → 再写View → 最后做Template(数据驱动页面)
  2. 调试神器
  • print(request.POST)# 查看表单数据
  • Django Debug Toolbar# 实时SQL监控
  1. 典型错误
  • 页面404 → 检查 urls.py 的路由命名
  • 数据库无数据 → python manage.py makemigrations + migrate
  1. 扩展方向
  • 加登录验证: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
posted on 2025-08-04 12:50  鱼油YOU  阅读(21)  评论(0)    收藏  举报