记录flask遇到的bug

bug1

在保存前端接受的压缩包时,我保存在了flask的static文件夹下,这样就出现了一个保存好后又重新回到保存行的bug,但是保存目录换成了D盘随意新建的一个文件夹,就能够解决

@app.route('/tjsjs', methods=['GET', 'POST'])
def do_tjsjs():
    if request.method == 'GET':
        return render_template('批量阅卷.html')
    else:
        zf = request.files.get('file')
        number = request.form.get('number')
        number_i = int(number)  # 第几次试卷
        # 存储路径
        path1 = 'D:\\python_projects\\b毕设\\static\\stu_img\\bank' + number
        # 存储压缩包
        path_z = path.join('D:\\python_projects\\b毕设\\static\\stu_img', zf.filename)
        path2 = 'D:\\Temp\\bishe\\number1\\students.zip'
        zf.save(path2)
        # 查询正确答案
        sql = 'select * from answer where a_time=%s'
        cursor.execute(sql, [number_i, ])
        an = cursor.fetchall()
        number_list = []
        # 统计正确题号
        for item in an:
            number_list.append(item['number'])
        # 解压
        f = zipfile.ZipFile(path2)
        for file in f.namelist():
            f.extract(file, path1 + '\\')
        f.close()
        # 删除压缩包
        remove(path_z)
        # 循环读入解压文件
        for filename in os.listdir(path1):
            # 识别
            img_path = path1 + '\\' + filename
            result = my_pp.fun11(img_path, number_list)
            # 拿出识别结果的姓名学号
            s_name = result['姓名']  # 学生姓名
            s_id = int(result['学号'])  # 学生学号
            result.pop('姓名')
            result.pop('学号')
            # 初始化成绩
            s_list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
            for item in an:
                num = str(item['number'])
                if item['a_answer'] == result[num]:
                    s_list[item['number'] - 1] = (item['score'])
                # 判断成绩是否存在,不存在就录入数据库,存在就更新数据库
                sql = 'select * from student where id=%s and s_time=%s'
                cursor.execute(sql, [s_id, number_i])
                jilu = cursor.fetchall()
                # 不存在,录入数据库
                if len(jilu) == 0:
                    sql = 'insert into student(id,name,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s_time) values' \
                          '(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
                    cursor.execute(sql,
                                   [s_id, s_name, s_list[0], s_list[1], s_list[2], s_list[3], s_list[4], s_list[5],
                                    s_list[6],
                                    s_list[7], s_list[8], s_list[9], number_i])
                    conn.commit()
                # 已存在,更新数据库
                else:
                    sql = 'update student set id=%s,name=%s,s1=%s,s2=%s,s3=%s,s4=%s,s5=%s,s6=%s,s7=%s,s8=%s,s9=%s,' \
                          's10=%s,s_time=%s where id=%s'
                    cursor.execute(sql,
                                   [s_id, s_name, s_list[0], s_list[1], s_list[2], s_list[3], s_list[4], s_list[5],
                                    s_list[6],
                                    s_list[7], s_list[8], s_list[9], number_i, s_id])

        return render_template('批量阅卷.html')

bug2

jinjia报错:传给前端的数据无法识别,但是重新运行却可以识别

报错代码如下:

@app.route('/search', methods=['GET', 'POST'])
def do_search():
    if request.method == 'GET':
        return render_template('查看学生成绩.html')
    else:
        s_id = request.form.get('id')
        s_number = request.form.get('number')
        s_id = int(s_id)
        s_number = int(s_number)
        sql = 'select * from student where id = %s and s_time = %s'
        cursor.execute(sql, [s_id, s_number])
        data_s = cursor.fetchall()
        data = data_s[0]
        return render_template('查看学生成绩.html', data=data_s)

<tr>
      <td>{{data.name}}</td>
      <td>{{data.id}}</td>
      <td>{{data.s1}}</td>
      <td>{{data}}</td>
      <td>{{data}}</td>                                 
</tr>

虽然不知道为什么,不过我加了一个循环就好了,传给前端的参数也换成data_s

{% for item in data_s%}
<tr>
      <td>{{item.name}}</td>
      <td>{{item.id}}</td>
      <td>{{item.s1}}</td>
      <td>{{item}}</td>
      <td>{{item}}</td>                                 
</tr>
{% endfor %}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值