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
- Django+Karlooper+ios重构学校的学生成绩管理系统(二)学生信息管理系统
- Django+Karlooper+iOS重构学校的学生成绩管理系统(一)系统重构
- Django+Karlooper+iOS重构学校的学生成绩管理系统(四)iOS客户端开发
- Django+Karlooper+iOS重构学校的学生成绩管理系统(三)服务端rest接口开发
- 学生信息管理系统(二)
- 学生信息管理系统二
- 学生信息管理系统(二)----错误处理
- 学生信息管理系统问题(二)
- 学生信息管理系统问题集锦(二)
- 学生信息管理系统 那些事儿(二)
- 学生信息管理系统问题(二)
- 学生信息管理系统总结(二)
- 学生信息管理系统问题总结(二)
- 学生信息管理系统(二)删除信息
- 学生信息管理系统问题总结(二)
- 学生信息管理系统错误集锦(二)
- 学生信息管理系统错误汇总(二)
- 学生信息管理系统总结(二)
- 使用mysqlreplicate命令快速搭建 Mysql 主从复制
- MySQL5.6X 主从配置
- [bzoj4503]&[caioj1455][FFT]串
- Codeforces Round #428 (Div. 2) E
- iOS之《Effective Objective-C 2.0》读书笔记(8)
- Django+Karlooper+ios重构学校的学生成绩管理系统(二)学生信息管理系统
- 树莓派如何挂载硬盘/U盘
- 'module' object has no attribute 'OP_NO_TLSv1_1'问题解决
- 总结unicode和utf-8的区别
- Android SurfaceView 播放视频
- Mybatis之分页插件——PageHelper
- Socket通讯简介
- Yii框架无法设置Content-Type之谜
- Linux下vi显示行数及自动缩进