Django+Karlooper+ios重构学校的学生成绩管理系统(二)学生信息管理系统

来源:互联网 发布:金太阳手机炒股软件 编辑:程序博客网 时间:2024/05/21 09:03

一、创建项目:

django-admin startproject student_info_management

二、创建app:

python manage.py startapp education_source_management

三、编写代码:

settings.py文件设置时区编码:

LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'

student_info_management/education_source_management/models.py

# -*- coding: utf-8 -*-from __future__ import unicode_literalsimport jsonfrom django.db import modelsfrom .ttypes import GENDERclass StuClass(models.Model):    name = models.CharField(verbose_name="课程名称", max_length=256, null=False, blank=False)    teacher = models.ForeignKey('Teacher', verbose_name="任课教师", null=False, blank=False)    room = models.CharField(verbose_name="授课地点", max_length=128, null=False, blank=False)    def __unicode__(self):        return self.name    class Meta:        db_table = "stu_class"        verbose_name = u"课程管理"class Teacher(models.Model):    name = models.CharField(verbose_name="教师姓名", max_length=32, null=False, blank=False)    birth = models.DateTimeField(verbose_name="出生日期")    gender = models.SmallIntegerField(verbose_name="性别", choices=GENDER)    def __unicode__(self):        return self.name    class Meta:        db_table = "teacher"        verbose_name = u"教师基本信息管理"class Student(models.Model):    name = models.CharField(verbose_name="学生姓名", max_length=32, null=False, blank=False)    birth = models.DateTimeField(verbose_name="出生日期")    gender = models.SmallIntegerField(verbose_name="性别", choices=GENDER)    number = models.CharField(verbose_name="学生编号", max_length=32, null=False, blank=False)    admission = models.DateTimeField(verbose_name="入学时间")    password = models.CharField(verbose_name="密码", max_length=32, null=True)    def __unicode__(self):        return self.name    def to_json(self):        student_info = {            "name": self.name,            "number": self.number,            "birth": str(self.birth)[:10],            "gender": self.gender,            "admission": str(self.admission)[:10],            "score": []        }        for score in self.score.all():            student_info["score"].append(score.to_dict())        return json.dumps(student_info, ensure_ascii=False)    class Meta:        db_table = "student"        verbose_name = u"学生基本信息管理"class Score(models.Model):    class_name = models.ForeignKey(StuClass, verbose_name="课程名称", null=False, default=False)    student_name = models.ForeignKey(Student, related_name="score", verbose_name="学生姓名", null=False, default=False)    score = models.IntegerField(verbose_name="分数", default=0, blank=False, null=False)    def __unicode__(self):        return "学生成绩"    def to_dict(self):        score = {            "class_name": self.class_name.name,            "score": self.score        }        return score    class Meta:        db_table = "score"        verbose_name = u"学生成绩管理"
student_info_management/education_source_management/admin.py

# -*- coding: utf-8 -*-from __future__ import unicode_literalsimport hashlibimport jsonfrom redis import Redisfrom django.contrib import adminfrom .models import Teacher, Student, StuClass, Scorefrom student_info_management.settings import REDIS_EPG_DBclass TeacherAdmin(admin.ModelAdmin):    list_display = ['name', 'birth', 'gender']    fields = ['name', 'birth', 'gender']    search_fields = ['name', 'gender']    list_filter = ['gender']class StudentAdmin(admin.ModelAdmin):    list_display = ['name', 'birth', 'gender', 'number', 'admission']    fields = ['name', 'birth', 'gender', 'number', 'admission', 'password']    search_fields = ['name', 'gender', 'number']    list_filter = ['gender']    actions = ['publish_student_info']    def save_model(self, request, obj, form, change):        try:            if 'password' in form.changed_data:                md5 = hashlib.md5()                md5.update(obj.password)                md5_pwd = md5.hexdigest()                obj.password = md5_pwd        except Exception, e:            print e        super(StudentAdmin, self).save_model(request, obj, form, change)    def publish_student_info(self, request, queryset):        redis = Redis(**REDIS_EPG_DB)        students_dict = redis.get("students-dict")        students_dict = json.loads(students_dict) if students_dict else {}        for stu in queryset:            student = Student.objects.get(id=stu.id)            pwd = student.number + student.password            md5 = hashlib.md5()            md5.update(pwd)            token = md5.hexdigest()            students_dict[student.number] = {                "pwd": student.password,                "token": token            }            redis.set("stu-"+token, student.to_json())        redis.set("students-dict", json.dumps(students_dict, ensure_ascii=False))        self.message_user(request, "学生信息发布成功")    publish_student_info.short_description = '发布选中的学生信息'class StuClassAdmin(admin.ModelAdmin):    list_display = ['name', 'teacher', 'room']    fields = ['name', 'teacher', 'room']    search_fields = ['name', 'teacher__name']    list_filter = ['teacher']class ScoreAdmin(admin.ModelAdmin):    list_display = ['class_name', 'student_name', 'score']    fields = ['class_name', 'student_name', 'score']    search_fields = ['class_name__name', 'student_name__name']admin.site.register(Teacher, TeacherAdmin)admin.site.register(Student, StudentAdmin)admin.site.register(StuClass, StuClassAdmin)admin.site.register(Score, ScoreAdmin)

运行程序:

python manage.py runserver 0.0.0.0:8000

效果图如下:


下载链接:点击此处

 Django+Karlooper+ios重构学校的学生成绩管理系统(三)服务端rest接口开发


阅读全文
1 0
原创粉丝点击