0


移动端开发之动态排行【MUI+Flask+MongoDB】

文章目录

👨‍💻作者简介: 大家好,我是上进小菜猪。内蒙古科技大学,大二计科。技术很菜但不放弃,努力做全栈。 热爱开发,开发软件,开发网站,开发各种东西。🛳️
🛳️个人主页: 上进小菜猪的博客
📗系列专栏:本文写在《APP开发从0到1》专栏 ✉️如果文章知识点有错误的地方,请指正! 和大家一起学习一起进步🎈
🔥如果觉得博主的文章还不错的话,请👍三连+关注支持👍一下博主哦

一,前言

今天依然有一个新需求哈,学生端要作答查看排名,目前排名似乎设置了但看不了。
第一眼看到了这个需求,感觉比较困难哈,因为这是一个动态的,单纯的html是无法完成的,好巧不巧,前几天专研了很久的js,现在还是对js这个语言较为熟悉的。
困难方面:
1,积分榜的IU设计。(这个问题不是很大)
2,数据库的积分排序,请求和返回。
3,动态排名(难点)

先看一下我的成品图:
在这里插入图片描述

二,数据库的积分排序

  1. find=db.mongo.find({}).sort([("jifeng", -1)])

MongoDB李的排序方法:使用 sort() 方法对数据进行排序。
看上面的代码:
sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
先使用mongodb的find方法,获取全部的数据,之后,我们使用sort方法对积分进行一个大到小的排序。

在这里插入图片描述

2,1,bug发现

我们在使用如上代码,目前的append为现在的字典集合。我们如果直接传值append给前台就会爆一个错误:

  1. Object of type ObjectId is not JSON serializable

这是为什么呢?
这是因为ObjectId无法在服务端生成json数据

2.2,bug解决

在这里插入图片描述
写一个如上的类方法。
吧我们的ObjectId对象,转换为我们的py对象。

  1. return json.dumps(append,cls=JSONEncoder)

返回处理完的数据给前端。

三,前端处理

这是我们前端拿到的json数据打印的后果,现在我们来处理他!
在这里插入图片描述
注意:mui.post有异步传输的特性。
所以注意执行的顺序。

  1. function(data){
  2. console.log("从服务端返回数据,准备判断");pass=data;

我们在方法外定义一个pass,在返回的方法内写赋值给pass。
之后我们写一个循环,循环遍历这些json数据,达到不同数据,不同输出的效果!

  1. for(var i in pass){}

3,1 特殊地方

因为我观察到第一二三名的icon是特殊的,所以我们循环的时候写一个判断方法:
在这里插入图片描述
这样就完美解决的这个问题,值得注意的一点是。这里需要一些JavaScript的基础,因为我们改为动态的排名需要我们使用JavaScript语言来写html。

四,附代码

  1. <script type="text/javascript">
  2. mui.init();
  3. var pass;
  4. mui.post('http://xxxxxx:xxxxx/paiming', {}, function(data){
  5. console.log("从服务端返回数据,准备判断");
  6. //console.log(JSON.stringify(data));pass=data;}, 'json');
  7. setTimeout(function(){
  8. var div = document.createElement("div");
  9. div.className ="tab-panel-item tab-active";
  10. document.querySelector(".tab-panel").appendChild(div);
  11. // console.log(pass[1]['name']);for(var i in pass){
  12. console.log(i);
  13. var div1 = document.createElement("div");
  14. div1.className ="aui-flex b-line"+ i;
  15. document.querySelector(".tab-active").appendChild(div1);
  16. if(i==0){
  17. var div2 = document.createElement("div");
  18. div2.className ="aui-ranking-text one";
  19. document.querySelector(".b-line"+i).appendChild(div2);
  20. //<em>1</em>
  21. var em = document.createElement("em");
  22. em.innerHTML="1";
  23. document.querySelector(".one").appendChild(em);}
  24. if(i==1){
  25. var div21 = document.createElement("div");
  26. div21.className ="aui-ranking-text two";
  27. document.querySelector(".b-line"+i).appendChild(div21);
  28. //<em>1</em>
  29. var em = document.createElement("em");
  30. em.innerHTML="2";
  31. document.querySelector(".two").appendChild(em);}
  32. if(i==2){
  33. var div22 = document.createElement("div");
  34. div22.className ="aui-ranking-text three";
  35. document.querySelector(".b-line"+i).appendChild(div22);
  36. //<em>1</em>
  37. var em = document.createElement("em");
  38. em.innerHTML="3";
  39. document.querySelector(".three").appendChild(em);}
  40. if(i>2){
  41. var j=Number(i)+1;
  42. // <div class="aui-ranking-text">
  43. // <em>4</em>
  44. // </div>
  45. var div224 = document.createElement("div");
  46. div224.className ="aui-ranking-text";
  47. div224.innerHTML="<em>"+j+"</em>"
  48. document.querySelector(".b-line"+i).appendChild(div224);
  49. //<em>1</em>
  50. // var em = document.createElement("em");
  51. // em.innerHTML=i+1;
  52. //document.querySelector("px"+i).appendChild(em);}
  53. //img占位
  54. var divimg = document.createElement("div");
  55. divimg.className ="aui-ranking-img";
  56. document.querySelector(".b-line"+i).appendChild(divimg);
  57. var name1 = document.createElement("div");
  58. name1.className ="aui-ranking-name aui-flex-box";
  59. name1.innerHTML="<h2>"+pass[i]['name']+"<h2>"+"<p>"+pass[i]['username']+"<p>"
  60. document.querySelector(".b-line"+i).appendChild(name1);
  61. // <div class="aui-ranking-num">50000</div>
  62. var jifneg = document.createElement("div");
  63. jifneg.className ="aui-ranking-num";
  64. jifneg.innerHTML=pass[i]['jifeng']
  65. document.querySelector(".b-line"+i).appendChild(jifneg);
  66. var name2 = document.createElement("div");
  67. name2.className ="aui-ranking-icon";
  68. document.querySelector(".b-line"+i).appendChild(name2);}
  69. //前123特殊
  70. }, 500);

最后继续用MUI镇文!
在这里插入图片描述

标签: flask mui mongodb

本文转载自: https://blog.csdn.net/weixin_52908342/article/details/124261841
版权归原作者 上进小菜猪 所有, 如有侵权,请联系我们删除。

“移动端开发之动态排行【MUI+Flask+MongoDB】”的评论:

还没有评论