Flask代码

 # -*- coding: utf8 -*-
 #--导入常用的python包
 import os
 import datetime
 from flask import Blueprint, render_template, abort, request, jsonify
 #--访问mongoDB
 from database import mongo
 #--采用Flask的Blueprint模版组织页面结构
 pages_api_res = Blueprint("pages_api_res", __name__, template_folder="templates")
 '''   
 ---api所响应的url:http://moocbd.1024cloud.com/api/res_general
 ---接受的方法:GET、POST
 ---作用:查询大数据资源的概况信息,
   POST时返回Json格式的记录文件数、课程数、课程学习统计量、学习者个数
   等信息,GET时返回测试api的html页面
 '''
 @pages_api_res.route("/api/res_general", methods=['GET','POST'])
 def api_res_general():
     # 当api的调用方法为GET时,返回测试页面
     if request.method=='GET':
         return render_template("api/res_general.html")
     ret = {'success':True, 'last_update':datetime.date.today().strftime('%Y-%m-%d')}
     # 获取原始记录文件的个数
     data = os.listdir('/data/logs/')
     ret['count_rawfiles'] = len(data)
     # 获取过滤后的记录文件的个数
     data = os.listdir('/data/learn/')
     ret['count_logfiles'] = len(data)
     # 获取课程的个数
     data = os.listdir('/data/typelogs/courses/')
     ret['count_courses'] = len(data)
     # 获取所有课程的记录文件总数
     count = 0
     for r,p,f in os.walk('/data/typelogs/courses/'):
         count += len(f)
     ret['count_courselogs'] = count
     # 获取学习者的相关记录个数
     data = os.listdir('/data/typelogs/learners/')
     ret['count_learners'] = len(data)
     # 获取所有学习者的记录文件总数
     count = 0
     for r,p,f in os.walk('/data/typelogs/learners/'):
         count += len(f)
     ret['count_learnerlogs'] = count
     # 利用jsonify模块规范返回数据的格式
     return jsonify(ret)

'''   
 ---api所响应的url:http://moocbd.1024cloud.com/api/sys_uv_day
 ---接受的方法:GET、POST
 ---作用:独立访客的数量统计,
   POST时返回Json格式的给定时段内的每日独立访客数量,GET时返回测试ap
   i的html页面
 '''
 @pages_api_sys.route("/api/sys_uv_day", methods=['GET','POST'])
 def api_sys_uv_day():
     # 当api的调用方法为GET时,返回测试页面
     if request.method=='GET':
         return render_template("api/sys_uv_day.html")
     idx = request.form.get('idx')
     if idx not in ['uv_stu','uv_stu_list','uv_course','uv_course_list','uv_cid','uv_rid']:
         abort(404)
     # 获取提交的时段信息
     ds = request.form.get('ds')
     de = request.form.get('de')
     rs = mongo.db.sys_uv_day \
         .find({'date':{'$gte':ds, '$lte':de}}, {idx:1, 'date':1}) \
         .sort([('date', 1)])
     # 使用json格式保存数据库查询结果
     ret = {'success':True, 'days':[], 'vals':[], 'idx':idx, 'ds':ds, 'de':de}
     for r in rs:
         ret['days'].append(r['date'])
         ret['vals'].append(r[idx])
     # 利用jsonify模块规范返回数据的格式
     return jsonify(ret)

 '''   
 ---api所响应的url:http://moocbd.1024cloud.com/api/sys_tv_day
 ---接受的方法:GET、POST
 ---作用:用户行为统计,
   POST时返回Json格式的给定时段内的用户选中课程、播放课程、暂停课程
   、浏览课程等操作次数,GET时返回测试api的html页面
 '''
 @pages_api_sys.route("/api/sys_tv_day", methods=['GET','POST'])
 def api_sys_tv_day():
     # 当api的调用方法为GET时,返回测试页面
     if request.method=='GET':
         return render_template("api/sys_tv_day.html")
     idx = request.form.get('idx')
     if idx not in ['stackedoper', 'tv_alloper','tv_oper_selectchapter',\
         'tv_oper_clickres', 'tv_oper_view', 'tv_oper_play', 'tv_oper_pause']:
         abort(404)
     # 获取提交的时段信息
     ds = request.form.get('ds')
     de = request.form.get('de')
     # A special case
     if idx == 'stackedoper':
         stackedopers = ['tv_oper_selectchapter', 'tv_oper_clickres', \
             'tv_oper_view', 'tv_oper_play', 'tv_oper_pause']
         tmp = {}
         for o in stackedopers: tmp[o] = {'name': o, 'data':[]}
         rs = mongo.db.sys_tv_day \
             .find({'date':{'$gte':ds, '$lte':de}}) \
             .sort([('date', 1)])
         ret = {'success':True, 'days':[], 'opers':stackedopers, 'vals':[], \
             'idx':idx, 'ds':ds, 'de':de}
         for r in rs:
             ret['days'].append(r['date'])
             for oper in stackedopers:
                 tmp[oper]['data'].append(r[oper])
         ret['vals'] = tmp.values()
         return jsonify(ret)
     # General case
     rs = mongo.db.sys_tv_day \
         .find({'date':{'$gte':ds, '$lte':de}}, {idx:1, 'date':1}) \
         .sort([('date', 1)])
     # 使用json格式保存数据库查询结果
     ret = {'success':True, 'days':[], 'vals':[], 'idx':idx, 'ds':ds, 'de':de}
     for r in rs:
         ret['days'].append(r['date'])
         ret['vals'].append(r[idx])
     # 利用jsonify模块规范返回数据的格式
     return jsonify(ret)

 
 '''   
 ---api所响应的url:http://moocbd.1024cloud.com/api/sys_geo_day
 ---接受的方法:GET、POST
 ---作用:按地域的用户访问次数统计,
   POST时返回Json格式的给定时段内的各省份的访问次数,GET时返回测试ap
   i的html页面
 '''
 @pages_api_sys.route("/api/sys_geo_day", methods=['GET','POST'])
 def api_sys_geo_day():
     # 当api的调用方法为GET时,返回测试页面
     if request.method=='GET':
         return render_template("api/sys_geo_day.html")
     idx = request.form.get('idx')
     if idx not in ['stu','evt']:
         abort(404)
     # 从数据库中读取数据
     ds = request.form.get('ds')
     de = request.form.get('de')
     rs = mongo.db.sys_geo_day \
         .find({'date':{'$gte':ds, '$lte':de}}) \
         .sort([('date', 1)])
     ret = {'success':True, 'days':[], 'idx':idx, 'ds':ds, 'de':de, 'vals':[]}
     for r in rs:
         ret['days'].append(r['date'])
         tmp = [{'name':loc.split()[-1], 'value':r['geo'][loc][idx]} for loc in r['geo']]
         ret['vals'].append({'date':r['date'], 'data':tmp})
     # 利用jsonify模块规范返回数据的格式
     return jsonify(ret)

 '''   
 ---api所响应的url:http://moocbd.1024cloud.com/api/sys_cid_day
 ---接受的方法:GET、POST
 ---作用:章节访问情况,
   POST时返回Json格式的给定课程章节给定日期内的访问量,GET时返回测试
   api的html页面
 '''
 @pages_api_sys.route("/api/sys_uv_day", methods=['GET','POST'])
 def api_sys_uv_day():
     # 当api的调用方法为GET时,返回测试页面
     if request.method=='GET':
         return render_template("api/sys_uv_day.html")
     idx = request.form.get('idx')
     if idx not in ['uv_stu','uv_stu_list','uv_course','uv_course_list','uv_cid','uv_rid']:
         abort(404)
     # 获取提交的时段信息
     ds = request.form.get('ds')
     de = request.form.get('de')
     rs = mongo.db.sys_uv_day \
         .find({'date':{'$gte':ds, '$lte':de}}, {idx:1, 'date':1}) \
         .sort([('date', 1)])
     # 使用json格式保存数据库查询结果
     ret = {'success':True, 'days':[], 'vals':[], 'idx':idx, 'ds':ds, 'de':de}
     for r in rs:
         ret['days'].append(r['date'])
         ret['vals'].append(r[idx])
     # 利用jsonify模块规范返回数据的格式
     return jsonify(ret)

 '''   
 ---api所响应的url:http://moocbd.1024cloud.com/api/user_freq_avg
 ---接受的方法:GET、POST
 ---作用:学习者的平均访问周期,
   POST时返回Json格式的根据所有用户统计得到的平均访问周期,GET时返回
   测试api的html页面
 '''
 @pages_api_user.route("/api/user_freq_avg", methods=['GET','POST'])
 def api_user_freq_avg():
     # 当api的调用方法为GET时,返回测试页面
     if request.method=='GET':
         return render_template("api/user_freq_avg.html")
     today = datetime.datetime.today()
     r = mongo.db.user_freq_avg.find_one({'date':today.strftime('%Y-%m-%d')})
     # 从数据库中读取数据
     vals = [ u['fa'] for u in r['freq_avg_list'] ]
     vals.sort()
     v_y = vals
     v_x = range(1, len(vals)+1)
     ret = {'success':True, 'idx':'user_freq_avg', 'date': today.strftime('%Y-%m-%d'),\
         'vals': zip(v_x, v_y) }
     # 利用jsonify模块规范返回数据的格式
     return jsonify(ret)

 '''   
 ---api所响应的url:http://moocbd.1024cloud.com/api/user_freq_hist
 ---接受的方法:GET、POST
 ---作用:学习者的访问周期的分布统计,
   POST时返回Json格式的根据所有用户的访问周期分布统计结果,GET时返回
   测试api的html页面
 '''
 @pages_api_user.route("/api/user_freq_hist", methods=['GET','POST'])
 def api_user_freq_hist():
     # 当api的调用方法为GET时,返回测试页面
     if request.method=='GET':
         return render_template("api/user_freq_hist.html")
     today = datetime.datetime.today()
     r = mongo.db.user_freq_avg.find_one({'date':today.strftime('%Y-%m-%d')})
     # 从数据库中读取数据
     vals = [ u['fa'] for u in r['freq_avg_list'] ]
     # Hist the values
     hist = np.histogram(vals, range(1,)+[, 1000])
     h_y = list(hist[0])
     h_x = list(hist[1][:-1])
     ret = {'success':True, 'idx':'user_freq_hist', 'date': today.strftime('%Y-%m-%d'),\
         'cats':h_x, 'vals':h_y }
     # 利用jsonify模块规范返回数据的格式  
     return jsonify(ret)

 '''   
 ---api所响应的url:http://moocbd.1024cloud.com/api/user_freq_bydays
 ---接受的方法:GET、POST
 ---作用:学习者的平均访问周期与访问天数的关系,
   POST时返回Json格式的根据所有用户的平均访问周期与访问天数统计结果
   ,GET时返回测试api的html页面
 '''
 @pages_api_user.route("/api/user_freq_bydays", methods=['GET','POST'])
 def api_user_freq_bydays():
     # 当api的调用方法为GET时,返回测试页面
     if request.method=='GET':
         return render_template("api/user_freq_bydays.html")
     today = datetime.datetime.today()
     r = mongo.db.user_freq_avg.find_one({'date':today.strftime('%Y-%m-%d')})
     # 从数据库中读取数据
     vals = [ u['fa'] for u in r['freq_avg_list'] ]
     days = [ u['ds'] for u in r['freq_avg_list'] ]
     ret = {'success':True, 'idx':'user_freq_bydays', 'date': today.strftime('%Y-%m-%d'),\
         'vals': zip(days,vals) }
     # 利用jsonify模块规范返回数据的格式
     return jsonify(ret)

Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理Flask简单整理
Nor Flash代码是一种非易失性存储器的编程语言。Nor Flash是一种常见的闪存技术,用于存储固件、操作系统和其他固化数据。Nor Flash代码使用类似于C语言的语法,它可以用来编写存储在Nor Flash芯片中的程序和数据。以下是一个简单的Nor Flash代码示例: ```c #include <flash.h> // 定义存储位置和大小 #define FIRMWARE_START_ADDRESS 0x100000 #define FIRMWARE_SIZE 0x8000 // 定义固件数据 const uint8_t firmware_data[FIRMWARE_SIZE] = { 0x00, 0x01, 0x02, 0x03, // 在这里添加实际的固件数据 }; // 主程序入口 int main() { // 初始化Nor Flash硬件 flash_init(); // 擦除存储区域 flash_erase(FIRMWARE_START_ADDRESS, FIRMWARE_SIZE); // 写入固件数据 flash_write(FIRMWARE_START_ADDRESS, firmware_data, FIRMWARE_SIZE); // 退出程序 return 0; } ``` 以上是一个简单的Nor Flash代码示例,它首先包含了flash头文件,然后定义了固件在Nor Flash中的存储位置和大小。接着,定义了固件数据的数组,这里只是一个简单的示例,实际情况下应该包含实际的固件数据。然后,在主程序入口函数中,通过flash_init()函数初始化Nor Flash硬件,然后使用flash_erase()函数擦除存储区域,最后使用flash_write()函数写入固件数据。最后,返回0表示程序正常退出。 这只是一个简单的示例,实际应用中可能涉及更复杂的代码和功能。Nor Flash代码可以根据具体需求进行编写和调整,以实现相应的应用功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值