侧边栏壁纸
  • 累计撰写 17 篇文章
  • 累计创建 10 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

学生管理系统admin版

十点差三分
2024-10-29 / 0 评论 / 0 点赞 / 18 阅读 / 0 字

Django学生管理系统

简介:基于Django自带的Admin后台快速构建一个学生管理系统,并利用simpleUI实现页面的美化

一、创建Django项目

1、在pycharm中使用命令行创建一个Django项目
 django-admin startproject studentManage(项目名称)
2、应用的创建

1.通过命令行创建app

python manage.py startapp app(创建的app的名称)
3.注册app

找到setting.py中的 INSTALLED_APPS,在里面添加

'app.apps.AppConfig'
4、创建orm模型
from django.db import models

# Create your models here.


class Teacher(models.Model):
    """
        定义一个 Teacher 类,表示一名教师

        属性:
            name:教师的姓名
            major:教师所属的专业

        方法:
            __str__:返回教师姓名的字符串表示
        """
    class Meta:
        verbose_name = '教师'
        verbose_name_plural = verbose_name
    # teacher_id = models.CharField(max_length=20, primary_key=True,verbose_name='工号')
    name = models.CharField(max_length=100,verbose_name='姓名')
    major = models.ForeignKey(Major, on_delete=models.CASCADE,verbose_name='专业')

    def __str__(self):
        return self.name


class Student(models.Model):
    """
        表示一个学生的模型。

        属性:
            student_id (str): 学生的ID,作为主键,最大长度为20。
            name (str): 学生的姓名,最大长度为100。
            class_id (Class): 学生所属的班级,外键关联到 Class 类,当班级被删除时,级联删除学生。
            major_id (Major): 学生所属的专业,外键关联到 Major 类,当专业被删除时,级联删除学生。

        方法:
            __str__: 返回学生姓名的字符串表示。
        """
    class Meta:
        verbose_name = '学生'
        verbose_name_plural = verbose_name
    GENDER_CHOICES = [
        ('1', '男性'),
        ('2', '女性')
    ]
    student_id = models.CharField(max_length=20, primary_key=True,verbose_name='学号')
    name = models.CharField(max_length=100,verbose_name='姓名')
    gender = models.CharField(max_length=10, choices=GENDER_CHOICES,verbose_name='性别')
    age = models.IntegerField(verbose_name='年龄')
    email = models.EmailField(verbose_name='邮箱')
    phone = models.CharField(max_length=15,verbose_name='电话')
    address = models.TextField(verbose_name='地址')
    created_at = models.DateTimeField(auto_now_add=True,verbose_name='创建时间')
    updated_at = models.DateTimeField(auto_now=True,verbose_name='更新时间')
    class_id = models.ForeignKey(Class, on_delete=models.CASCADE,verbose_name='班级')
    major_id = models.ForeignKey(Major, on_delete=models.CASCADE,verbose_name='专业')

    def __str__(self):
        return self.name


class Grade(models.Model):
    """
        表示一个成绩的模型。

        属性:
            grade_id (int): 成绩的ID,作为主键,自增。
            student (Student): 学生,外键关联到 Student 类,当学生被删除时,级联删除成绩。
            course (Course): 课程,外键关联到 Course 类,当课程被删除时,级联删除成绩。
            score (float): 成绩。

        方法:
            __str__: 返回学生和课程的字符串表示。
        """
    class Meta:
        verbose_name = '成绩'
        verbose_name_plural = verbose_name
    grade_id = models.AutoField(primary_key=True,verbose_name='课程ID')
    student = models.ForeignKey(Student, on_delete=models.CASCADE, verbose_name='学生')
    course = models.ForeignKey(Course, on_delete=models.CASCADE ,verbose_name='课程')
    score = models.FloatField(verbose_name='成绩')

    def __str__(self):
        return f"{self.student} - {self.course}"

5、在admin.py 中注册模型
from django.contrib import admin

from app.models import  Student, Teacher, Grade



class StudentAdmin(admin.ModelAdmin):
    # form = StudentForm
    list_display = ('student_id', 'major_id', 'class_id', 'name', 'age', 'gender', 'address')
    list_filter = ('class_id', 'major_id')
    search_fields = ('student_id', 'gender', 'name')
    ordering = ('student_id',)


class TeacherAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'major')
    list_filter = ('major',)


class GradeAdmin(admin.ModelAdmin):
    list_display = ('grade_id', 'student', 'course', 'score')
    list_filter = ('student', 'course')
    search_fields = ('grade_id', 'student__name', 'course__course_name')
    ordering = ('grade_id',)

# Register your models here.

admin.site.register(Student, StudentAdmin)
admin.site.register(Teacher, TeacherAdmin)
admin.site.register(Grade, GradeAdmin)

二、simpleui的安装与配置

官方文档:快速上手指南 | Django SimpleUI

1、安装simpleUI
pip install django-simpleui
2、配置simpleUI

找到setting.py

 INSTALLED_APPS = [
      'simpleui',# 加入该项
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      ...
  ]
...
...
...
# 将Django的语言修改为中文
LANGUAGE_CODE = "zh-hans"  
...
...
...

setting.py加入


# 隐藏右侧SimpleUI广告链接和使用分析
SIMPLEUI_HOME_INFO = False
SIMPLEUI_ANALYSIS = False
# logo替换
SIMPLEUI_LOGO = 'http://gcore.jsdelivr.net/gh/zhynxq/photo/19.jpg'

# 注意key名为菜单上实际显示的名字,不是模型或App名。
# 配置每一项的图标
# 图标地址:https://fontawesome.com/icons?d=gallery
# 选择class复制添加就可以(注意:不要选择加粗等的图标)
SIMPLEUI_ICON = {
    '专业': 'fas fa-th-list',
    '学生': 'fa-solid fa-graduation-cap',
    '班级': 'fa-solid fa-circle-exclamation',
    '成绩': 'fa-solid fa-check',
    '学院': 'fa-solid fa-city'
}
3、如何修改后台的标题

在admin.py中添加

admin.site.site_header = '学生管理后台'
admin.site.site_title = '学生管理后台'   
admin.site.index_title = '学生管理后台'
0

评论区