Django实战(5) 您所在的位置:网站首页 python作业怎么交 Django实战(5)

Django实战(5)

2023-07-01 20:58| 来源: 网络整理| 查看: 265

这是完成后的示例图,评论一下得失:缺点就是前端过于简单不美观,优点自然是Django框架易于编码的特性。

这个系统主要要实现三个功能:

1)学生提交作业

2)教师批改作业

3)显示成绩供学生查看

我是用Django框架实现的,基于Python语言脚本的框架。关于django的一些基础知识可以查看我以前的博文:

1)网站发布(实现同一广(路)播(由)域(器)内的内网访问)

https://blog.csdn.net/qq_41938259/article/details/96571765

2)Django视图初步(多个页面,超链接至另一个网页,基本的文本显示)

https://blog.csdn.net/qq_41938259/article/details/96721414

3)DjangoMVC模式(包括css/img/js的static路径设置)

https://blog.csdn.net/qq_41938259/article/details/97555480

4)Django的ORM(ORM的概念,Model的字段,懒加载·链式调用与Queryset)

https://blog.csdn.net/qq_41938259/article/details/98194924

本次实战也是根据学校期末需要提交的作业要求来的,这边给出了我的GitHub链接。包含了所有的代码:

https://github.com/timTianWSRF/student_house/commit/6f669324286f7d9d6893178ac0b6ecf898f1a6e6

现在切入正题:

第一个要求是提交作业,于是我们可以用两个函数来完成,一个函数是用来提交学生信息(例如姓名,学号,性别,手机号等等)的表单;另一个是用来上传作业文件的函数。

这是提交学生信息的函数:

使用POST方法提交,当判定提交方法正确时,将填入并上传的数据与内嵌的数据库交互,并重定向刷新页面。

def index(request): students = Student.get_all() if requesthod == 'POST': form = StudentForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect(reverse('index')) else: form = StudentForm() context = { 'students': students, 'form': form, } return render(request, 'index.html', context=context)

然后给出提交作业的函数:

def upload_file(request): students = Student.get_all() if requesthod == "POST": # 请求方法为POST时,进行处理 myFile = request.FILES.get("myfile", None) # 获取上传的文件,如果没有文件,则默认为None if not myFile: return HttpResponse("no files for upload!") destination = open(os.path.join("E:\\", myFile.name), 'wb+') # 打开特定的文件进行二进制的写操作 for chunk in myFile.chunks(): # 分块写入文件 destination.write(chunk) destination.close()

然而在此之前,我们需要到模板文件models.py中去定义表单相关的字段:

from django.db import models class Student(models.Model): SEX_ITEMS = [ (1, 'male'), (2, 'female'), (0, 'unknown'), ] STATUS_ITEMS = [ (0, 'applying'), (1, 'passed'), (2, 'refused'), ] name = models.CharField(max_length=128, verbose_name='姓名') sex = models.IntegerField(choices=SEX_ITEMS, verbose_name='性别') profession = models.CharField(max_length=128, verbose_name='学号') email = models.EmailField(verbose_name='电子邮箱') qq = models.CharField(max_length=128, verbose_name='QQ') phone = models.CharField(max_length=128, verbose_name='手机号码') created_time = models.DateTimeField(auto_now_add=True, editable=False, verbose_name="创建时间") score = models.CharField(max_length=128, default="尚未批改", verbose_name='成绩') def __str__(self): return ''.format(self.name) class Meta: verbose_name = verbose_name_plural = "StudentInf" @classmethod def get_all(cls): return cls.objects.all()

接着补全url映射:

app_name = 'student' urlpatterns = [ url(r'test/', test, name='test'), url(r'^$', index, name='index'), url(r'^admin/', admin.site.urls), url(r'^staticfiles/(?P.*)$', serve, {'document_root': settings.STATIC_ROOT, 'show_indexes': True}), url(r'test2/', test2), url(r'^uploadFile/$', upload_file) ]

于是第一个要求就基本实现了。

接着来说第二个要求:教师批改分数。这个就比较容易了,教师可以通过等陆后台管理系统来修改学生过分数那一项,这个过程只要在admin.py中添加一句话即可,这也同时证明了django框架的强大之处:

list_editable = ['score']

最后一个要求也是很简单的,只要用前端代码把同学的名字和成绩显示在页面上即可:

学员管理系统 {% for student in students %} {{ student.name }} - {{ student.score }} {% endfor %} {% csrf_token %} {{ form }} Tips:文件保存在E盘

END



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有