zoukankan      html  css  js  c++  java
  • 一天只能触发一次操作

    需求:

      学生可以给予导师评价,但是一天只能给予一次评价。

      数据库:

      

    class Appraise(models.Model):
        TYPE = (
            (1, u''),
            (2, u''),
            (3, u''),
        )
        student = models.ForeignKey('accounts.Student')
        teacher = models.ForeignKey('accounts.Teacher')
        appraise_type = models.SmallIntegerField(verbose_name="评价类型", blank=True, null=True, choices=TYPE)
        create_time = models.DateField(auto_now_add=True)
        status = models.SmallIntegerField(default=1)
    
        objects = AppraiseManager()
    
        class Meta:
            verbose_name = "学生评价导师记录"
            verbose_name_plural = "学生评价导师记录"

    Html页面使用ajax传递数据

    $(function(){
              $("#good").click(function(){
                  if (!confirm("确定给予校内导师好评吗?")) return;
                    $.ajax({
                        type: "POST",   // 数据交换方式,如果递交的数据要修改后台数据库,则此处必须选择POST,反之为GET
                        url: '{% url "student:appraise" %}',  // 处理递交的数据的后台函数
                        data: {appraise: "3", teacherType:"1"}, // 递交的具体数据,使用key: value的方式传递
                        dataType: 'json',
                        success: function (response) {  // 处理完数据后前台的回调函数(即后台执行完之后前台接着要做的事)
                            if (response['flag'] == true) {
                                alert(response['msg']);
                            } else {
                                alert(response['msg']);
                            }
                        }
                    });
              });
    })

    后台接收

    try:
        appraise = request.POST['appraise']
        if request.POST['teacherType'] == "1":
            if Appraise.objects.filter(student=request.user.student, teacher=request.user.student.teacher):
          appraise = Appraise.objects.filter(student=request.user.student,
                                                           teacher=request.user.student.teacher).order_by("-create_time")[0]
          now = datetime.datetime.now()
          last_time = appraise.create_time.strftime('%Y-%m-%d')
          d = now - datetime.datetime.strptime(last_time, '%Y-%m-%d')
          if d.days > 0:
            Appraise.objects.create(student=request.user.student, teacher=request.user.student.teacher,
                                                    appraise_type=appraise)
          else:
            return json_response(False, '-1', "今日已评价过,请明日再评价!")
        else:
          Appraise.objects.create(student=request.user.student, teacher=request.user.student.teacher,
                                                appraise_type=appraise)
    except Appraise.DoesNotExist:
        return json_response(False, '-1', "评价失败")
    except Exception, e:
        print e
         return json_response(False, '-1', "评价失败")
    return json_response(True, '1', "评价成功")    

    首先要通过strftime将时间datetime.date转化为字符串格式,再通过strptime转化为datetime.datetime格式进行比较

  • 相关阅读:
    upstream sent unsupported FastCGI protocol version: 72 while reading response header from upstream
    当代免疫学小史-第一章(根据讲谈社Blue Backs系列2009年第一版第三次印刷版本翻译)
    微信小程序自定义tabbar解决方案(可用于解决tabbar跳转至分包页面问题)
    celery的使用
    分布式之数据库和缓存双写一致性方案解析
    opencv实战-全景图像拼接
    matplotlib+seaborn样式管理-学习整理
    matplotlib绘制3D图形
    matplotlib+seaborn图形绘制-学习整理
    opencv实战-文档扫描
  • 原文地址:https://www.cnblogs.com/tuifeideyouran/p/4397935.html
Copyright © 2011-2022 走看看