【python毕业设计】Django框架实现学生信息管理系统

Django框架实现学生信息管理系统

演示视频:https://v.qq.com/x/page/l3072o8woc9.html

演示界面内容如下

总体概括

注册流程

首先进行输入用户名(邮箱)、密码以及验证码,输入完之后点击注册按钮。如果输入的不正确,提示错误信息。

如果一切信息填写正确无误,调用STMP模块发送激活邮件,用户必须要点击接收到邮箱链接,进行邮件激活后才方可登陆。

即使注册成功,没有激活的用户也不能登陆,用户以get的方式直接重定向到注册页面。

 

注册登录:

用户能在系统中进行登陆注册和忘记密码进行找回的功能。

个人中心:修改头像,修改密码,修改邮箱,可以看到我的信息。

 

日志记录:

记录后台人员的操作,方便发现BUG和查看各项调用进行时间。

导航栏:学生信息中有基本信息、年级及成绩信息的模块,能够排序筛选等功能。

多选操作:

可以选择多条记录进行删除操作,还可以在课程列表页可以对不同课程进行排序。

数据页码:

可以设置各项数据在每一页中显示的数量多少,进行翻页功能。

模块列表页:

能够有过滤器功能,在范围内进行查看数据。还能将数据导出为csvxmljson等数据格式。

model.py

from django.db import models


# Create your models here.
class Grades(models.Model):
    gname = models.CharField(max_length=20)
    gdate = models.DateTimeField()
    gteacher = models.CharField(max_length=20)
    ggirlnum = models.IntegerField()
    gboynum = models.IntegerField()
    isDelete = models.BooleanField(default=False)

    def __str__(self):
        return self.gname


class Students(models.Model):
    sname = models.CharField(max_length=20)
    sgender = models.BooleanField(default=True)
    sminzu = models.CharField(max_length=20)
    sbir = models.IntegerField()
    scontend = models.CharField(max_length=20)
    shome = models.CharField(max_length=20)
    sidcard = models.CharField(max_length=20)
    sschnum = models.IntegerField()
    stel = models.CharField(max_length=20)
    steacher = models.CharField(max_length=20)
    isDelete = models.BooleanField(default=False)

    # 关联外键
    sgrade = models.ForeignKey("Grades", on_delete=models.CASCADE)

    def __str__(self):
        return self.sname




# class Score(models.Model):
#     math = models.IntegerField()


    # 关联外键
    sgrade = models.ForeignKey("Grades", on_delete=models.CASCADE)



from django.db import models
from django.contrib.auth.models import Group
from django.conf import settings
from django.utils.encoding import python_2_unicode_compatible

AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User')

SERVER_STATUS = (
    (0, u"Normal"),
    (1, u"Down"),
    (2, u"No Connect"),
    (3, u"Error"),
)
SERVICE_TYPES = (
    ('moniter', u"Moniter"),
    ('lvs', u"LVS"),
    ('db', u"Database"),
    ('analysis', u"Analysis"),
    ('admin', u"Admin"),
    ('storge', u"Storge"),
    ('web', u"WEB"),
    ('email', u"Email"),
    ('mix', u"Mix"),
)


@python_2_unicode_compatible
class AccessRecord(models.Model):
    date = models.DateField()
    user_count = models.IntegerField()
    view_count = models.IntegerField()

    class Meta:
        verbose_name = u"Access Record"
        verbose_name_plural = verbose_name

    # def __str__(self):
    #     return "%s Access Record" % self.date.strftime('%Y-%m-%d')





from django.db import models
from django.contrib.auth.models import Group
from django.conf import settings
from django.utils.encoding import python_2_unicode_compatible

AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User')

SERVER_STATUS = (
    (0, u"Normal"),
    (1, u"Down"),
    (2, u"No Connect"),
    (3, u"Error"),
)
SERVICE_TYPES = (
    ('moniter', u"Moniter"),
    ('lvs', u"LVS"),
    ('db', u"Database"),
    ('analysis', u"Analysis"),
    ('admin', u"Admin"),
    ('storge', u"Storge"),
    ('web', u"WEB"),
    ('email', u"Email"),
    ('mix', u"Mix"),
)


@python_2_unicode_compatible
class AccessRecord(models.Model):
    date = models.DateField()
    user_count = models.IntegerField()
    view_count = models.IntegerField()

    class Meta:
        verbose_name = u"Access Record"
        verbose_name_plural = verbose_name

    # def __str__(self):
    #     return "%s Access Record" % self.date.strftime('%Y-%m-%d')




 

admin.py

from django.contrib import admin

# Register your models here.
from .models import Grades,Students



class StudentsInfo(admin.TabularInline):#StackeInLine显示不同 增加页面
    model = Students
    extra = 2


class GradesAdmin(admin.ModelAdmin):
    inlines = [StudentsInfo]
    #列表页属性
    list_display = ['id','gname','gdate','ggirlnum','gboynum','gteacher','isDelete',]
    list_filter = ['gteacher']
    search_fields = ['gname']
    list_per_page = 5
    #
    # #添加修改页属性
    # fields = ['ganame','gdate','ggirlnum','isDelete','gboynum']
    # fieldsets = [('num',{"fields":['ggirlnum','gboynum']}),('base',{"fields":['gname','gdate','isDelete','home','shome','sbir','sidcard','sschnum','stel']})]


@admin.register(Students)
class StudentAdmin(admin.ModelAdmin):
    def gender(self):
        if self.sgender:
            return "女"
        else:
            return "男"
    #设置页面名称
    gender.short_description = "性别"
    list_display = ['pk','sname',gender,'scontend','sgrade','isDelete','shome','sbir','sidcard','sschnum','stel']
    #每页显示人数
    list_per_page = 10
    #按照班级筛选
    list_filter = ['sgrade']
    #查找
    search_fields = ['sname']
    #执行动作的位置
    actions_on_bottom = True
    actions_on_top = False



#注册
# admin.site.register(Students,StudentAdmin)
admin.site.register(Grades,GradesAdmin)

具体源码内容  请关注学长公众号回复“Django”

公众号二维码           

 

网络毒刘 CSDN认证博客专家 Python 公众号:刘旺学长 数据分析
因为同样的坑不想踩两次而写博客,
也同样为了社会更好的进步...

其实 Python 已经是一个很老的编程语言了,到现在(2019年) Python 已经高龄 28 岁,比很多程序员的年龄都大。现在之所以这么流行和社区、人工智能AI的日益发展,有很大的关系。

千里之行始于足下,还不开始学习 Python编程吗



个人公众号:刘旺学长
一名热爱分享技术的宝藏博主。
公众号回复1024,有免费教程分享。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页