CRM权限管理(5)、作业流程1-学生作业列表和详情页

作业流程


models.py

设计思路
model设计思路


作业列表页

urls.py

from django.conf.urls import url,include
from student import views

urlpatterns = [
    url(r'^my_homework/$', views.homework_list,name='my_homework'),
]

models.py

from django.db import models
import datetime

class Homework(models.Model):
    """作业模板"""
    title = models.CharField(max_length=32, verbose_name='作业标题')
    desc = models.TextField(verbose_name='作业需求')
    scoring_point = models.TextField(verbose_name='得分点')
    publish_date = models.DateField(auto_now_add=True,verbose_name='发布日期')
    suggested_complete_days = models.IntegerField(verbose_name='完成天数')
    

from crm.models import Student

class HomeworkRecord(models.Model):
    """学生作业记录"""
    homework = models.ForeignKey('Homework')
    student = models.ForeignKey(Student,verbose_name='学生',null=True,blank=True)
    status_choices = ((0,'未提交'),(1,'待批改'),(2,'已批改'),(3,'迟交'))
    status = models.SmallIntegerField(verbose_name='作业状态',choices=status_choices)
    teacher_comments = models.TextField(verbose_name='导师点评',null=True,blank=True)
    score = models.SmallIntegerField(verbose_name='分数',default=0)
    upload_time = models.DateTimeField(verbose_name='提交时间',null=True,blank=True)
    

class Student(models.Model):
    """学生"""
    student = models.OneToOneField('StudentEnrollment')  # 只有走完报名流程才会成为正式学员
    user_account = models.OneToOneField('UserProfile')  # 创建用户

手动在后台中学生对象:

  • 1、后台中创建学生
  • 2、注册新用户userprofile;
  • 3、进入后台为userprifile指定角色;
  • 4、创建student指定关联的学生 和 userprofile

手动在后台中给学生对象 分配 作业

views.py

from django.shortcuts import render,HttpResponse
from django.contrib.auth.decorators import login_required


@login_required
def homework_list(request):
    if request.user.is_superuser:
        # 若为admin管理员,则取出所有作业记录
        homework_record_list = HomeworkRecord.objects.all()
    else:
        student = request.user.student
        homework_record_list = HomeworkRecord.objects.filter(student=student)

前端页面

{% block right_content %}
    <div class="panel panel-primary">
    <div class="panel-heading">
        <h4>作业列表</h4>
    </div>

    <div class="panel-body" style="">
    {#  导航栏 #}
    <div class="row">
        <!-- 循环每条作业记录 -->
        {% for record in homework_record_list %}
        <div class="col-lg-4" style="box-shadow: 0 2px 4px 0 #d0d0d0;">
            <h4>{{ record.homework.title }}</h4>
            <p class="">状态:<span style="color: {% ifequal record.status 0 %}red{% else %}#84CC39{% endifequal %}">
                {{ record.get_status_display }}</span></p>
            <p class="">得分:<span style="color: #84CC39">{{ record.score }}分</span></p>
            <p class="">截止日期:<span>{% get_date record.homework.publish_date record.homework.suggested_complete_days %}</span></p>
            <p>学员:<span style="color: #adadad">{{ record.student.student.customer.name }}</span></p>
            <p class="desc"><a class="btn btn-success" href="{% url 'homework_detail' record.id %}"
                  role="button">详细信息 »</a></p>
        </div>
        {% endfor %}
     </div><!--/row-->
</div>
</div>
{% endblock %}

作业详情页

urls.py

from django.conf.urls import url,include
from student import views

urlpatterns = [
    url(r'^my_homework/(\d+)/$', views.homework_detail,name='homework_detail'),
]

views.py

@login_required
def homework_detail(request,record_id):
    homework_record = HomeworkRecord.objects.filter(id=int(record_id)).first()

    # 获取用户已经上传的作业记录
    if request.method == 'GET':
        upload_files = []
        from django import conf
        import os
        # 根据作业记录id找到当前作业的目录
        homework_upload_dir = os.path.join(conf.settings.STUDENT_HOWEWORK_DIR, record_id)
        if os.path.isdir(homework_upload_dir):
            # 取出作业列表
            upload_files = os.listdir(homework_upload_dir)

    return render(request,'student/homework_detail.html',locals())

前端页面

{% block right_content %}
<div class="panel panel-primary">
    <div class="panel-heading">
        <h3>我的作业</h3>
    </div>
    <div class="panel-body" style="">
        <p>我的成绩:<span style="color:#fd7b4d">{{ homework_record.score }}分</span></p>
        
        <p>作业题目:<span>{{ homework_record.homework.title }}</span></p>
        
        <p>作业需求:</p>
        <pre>{{ homework_record.homework.desc }}</pre>

        <p>踩分点:</p>
        <pre>{{ homework_record.homework.scoring_point }}</pre>
        
        <p>导师点评:</p>
        <pre>{{ homework_record.teacher_comments }}</pre>

        <hr>
        <p>已上传文件</p>
         <div style="margin-top: 20px" id="upload_file_list">
            {# 此处 f 为文件名称  #}
            {% for f in upload_files %}
                <p id="{% replace_str f %}">{{ f }}<span class="btn delete_file" style="color: red">删除</span><a
                        href="{% url 'homework_download' homework_record.id f %}" class="download_file" style="display: inline">下载</a></p>
            {% endfor %}
        </div>

        <form action="{% url 'homework_upload' homework_record.id %}" class="dropzone" id="myAwesomeDropzone">
            {% csrf_token %}
            <div class="fallback">
                <input name="file" type="file" multiple />
            </div>
        </form>
    </div>
</div>
{% endblock %}

猜你喜欢

转载自www.cnblogs.com/fqh202/p/9465620.html
今日推荐