APP优化及积分榜进阶下篇【MUI+Flask+MongoDB】
  TEZNKK3IfmPf 2023年11月13日 22 0

一,前言

接上篇。上篇提到: 今天又有一个小需求:如下:排行榜可以查看班级排名。 需要解决的问题: 1,注册时候需要增加班级属性。 2,数据库需要一个小的改变。 3,为了友好性,我在个人积分榜增加了段位的显示。非常的友好。 4,排行榜增加班级排名。

而我就写了前三个需求,今天写一下第四个需求。

二,后端——班级排名

首先,定义一个sum变量,里面放mongo表的所有数据。

list_clss=[]
sum = db.mongo.find()

定义一个空的list_clss列表。 目的:放我们遍历出来的班级值。

 for i in sum:
        sum_fries.append(i)
        if(i['class'] not in list_clss):
            list_clss.append(i['class'])

上述代码块解释如下: 我们循环遍历sum。 然后sum_fries是另外存储一个sum表内容(相当于复制一份)。 加一个遍历存放条件。如果,现在遍历到的值。在list_clss列表里没有就追加进去,如果。有的话,不追加。 实现功能: 去重功能,把现在注册的用户班级提取处理,方便后续操作。

list_clss_sum=[]
    list_clss_people=[]

上述代码块解释如下:定义两个空的列表。 一个是放班级总积分,另一个是放班级人数,已列表的方法存储。 APP优化及积分榜进阶下篇【MUI+Flask+MongoDB】 上述代码块解释如下:获取列表长度,循环,累加目标班级下的人的目前积分,存储到对应的sum列表里。 人数同理,每次找到目标,自增一。 str(list_clss[j])==str(ii['class']),这个为筛选条件。

for jj in range(0,len(list_clss)):

下面都是对mongodb数据的操作问题,如下: APP优化及积分榜进阶下篇【MUI+Flask+MongoDB】 把我们的字典集准备好。

if(find==None):
    db.classdb.insert_one(classdb)
if(find!=None and find_again==None):
    db.classdb.update_one(
        class_find,
        {'$set':class_again
         }
    )

上述代码块解释如下: 情况一:如果在班级数据里没有找到现在这条内容的话,执行添加操作,如上代码的find==none。 情况二:如果目标已经在班级数据库里,但是不完全一样,我们需要执行更新mongodb数据库的操作。

after_find=db.classdb.find({}).sort([("average", -1)])

最后,如上代码,我们使用mongodb的排序功能,已平均分为目标,按大到小的顺序排序。

append=[]
    for i in after_find:
        append.append(i)
    print(append)

然后写一个遍历,把排序后的数据库目标值,一条一条的追加到append里。后续传递给前端,实现班级排名的功能要求。

三,成果展示

APP优化及积分榜进阶下篇【MUI+Flask+MongoDB】

四,源码附上

# 班级排名
@app.route("/classpaiming",methods=['POST','GET'])
def classpaiming():
    list_clss=[]
    sum = db.mongo.find()
    sum_fries=[]
    for i in sum:
        sum_fries.append(i)
        if(i['class'] not in list_clss):
            list_clss.append(i['class'])
    #print(list_clss)
    list_clss_sum=[]
    list_clss_people=[]
    for j in range(0,len(list_clss)):
        cum=0
        people=0
        for ii in sum_fries:
            #print(ii['class'])
            if(str(list_clss[j])==str(ii['class'])):
                cum=cum+ii['jifeng']
                people=people+1
        list_clss_sum.append(cum)
        list_clss_people.append(people)
    #print(list_clss_sum)
    #print( list_clss_people)
    for jj in range(0,len(list_clss)):
        classdb={
            "class":list_clss[jj],
            "sum":list_clss_sum[jj],
            "people":list_clss_people[jj],
            "average":round(list_clss_sum[jj]/list_clss_people[jj], 2)
        }
        class_find={
            "class":list_clss[jj]
        }
        class_again={
            "sum":list_clss_sum[jj],
            "people":list_clss_people[jj],
            "average":round(list_clss_sum[jj]/list_clss_people[jj], 2)
        }
        find=db.classdb.find_one(class_find)
        find_again=db.classdb.find_one(classdb)
        if(find==None):
            db.classdb.insert_one(classdb)
        if(find!=None and find_again==None):
            db.classdb.update_one(
                class_find,
                {'$set':class_again
                 }
            )
    after_find=db.classdb.find({}).sort([("average", -1)])
    #print(classdb)
    append=[]
    for i in after_find:
        append.append(i)
    print(append)
    return json.dumps(append,cls=JSONEncoder)

最后。MUI镇文! APP优化及积分榜进阶下篇【MUI+Flask+MongoDB】

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月15日   49   0   0 shiromongodb
  TEZNKK3IfmPf   2024年03月29日   60   0   0 mongodb
  TEZNKK3IfmPf   2023年11月15日   29   0   0 mongodb
  TEZNKK3IfmPf   2024年03月29日   59   0   0 MUI
TEZNKK3IfmPf