Flask实战第65天:帖子按照发布时间和评论数量等排序

排序,我们需要在前端传递参数, 编辑front_index.html

编辑front.views.py

from apps.models import HighlightPostModel
from sqlalchemy.sql import func
...

@bp.route(‘/‘)
def index():
    banners = BannerModel.query.order_by(BannerModel.priority.desc()).all()
    boards = BoardModel.query.all()

    # 当前页面
    page = request.args.get(get_page_parameter(), type=int, default=1)
    # 开始位置
    start = (page - 1) * config.PER_PAGE
    # 结束位置
    end = start + config.PER_PAGE

    board_id = request.args.get(‘bd‘,type=int, default=None)
    sort = request.args.get("st", type=int, default=1)
    query_obj = None
    if sort == 1:
        query_obj = PostModel.query.order_by(PostModel.create_time.desc())
    elif sort == 2:
        # 按照加精的时间倒叙排序
        query_obj = db.session.query(PostModel).outerjoin(HighlightPostModel).order_by(
            HighlightPostModel.create_time.desc(), PostModel.create_time.desc())
    elif sort == 3:
        # 按照点赞的数量排序,点赞功能没有做,所以这里用时间倒序排序
        query_obj = PostModel.query.order_by(PostModel.create_time.desc())
    elif sort == 4:
        # 按照评论的数量排序
        query_obj = db.session.query(PostModel).outerjoin(CommentModel).group_by(PostModel.id).order_by(
            func.count(CommentModel.id).desc(), PostModel.create_time.desc())

    if board_id:
        query_obj = query_obj.filter(PostModel.board_id == board_id)
        posts = query_obj.slice(start, end)
        total = query_obj.count()
    else:
        posts = query_obj.slice(start, end)
        total = query_obj.count()

    pagination = Pagination(bs_version=3,page=page, total=total)
    context = {
        ‘banners‘: banners,
        ‘boards‘: boards,
        ‘posts‘: posts,
        ‘pagination‘: pagination,
        ‘current_board‘: board_id,
        ‘current_sort‘: sort
    }
    return render_template(‘front/front_index.html‘, **context)

front.views.py

排序 功能已经完成了

但是选中的状态样式还没有改,修改front_index.html

原文地址:https://www.cnblogs.com/sellsa/p/9752051.html

时间: 2024-08-08 03:45:30

Flask实战第65天:帖子按照发布时间和评论数量等排序的相关文章

Skype For Business 2015实战系列11:创建并发布拓扑

Skype For Business 2015实战系列11:创建并发布拓扑 Skype For Business Server安装前需要先定义好拓扑,因为我们要在拓扑中的每台服务器上安装 Skype for Business Server 系统,必须首先创建和发布一个拓扑.发布拓扑时,拓扑信息会载入中央管理存储数据库.如果这是 Enterprise Edition 池,您将在初次发布新拓扑时创建中央管理存储数据库.如果是 Standard Edition,则需要运行部署向导中的"准备第一个 St

iOS: 格式化新浪微博/QQ说说等等的发布时间

介绍:对于一些社交工具,我们可以发布一些说说或者心情什么的,如新浪微博,QQ,微信等,发布成功后,上面都会有一个发布的时间. 这个时间并不是具体的NSDate类型,而是经过格式化过的符合一般标准的模式,例如:发布于前一个月.前一个星期.前一天.十几分钟前.刚刚等. 下面就给出两个具体的测试Demo 头文件: // ViewController.m // 测试发布时间格式化 // // Created by mac on 16/1/26. // Copyright © 2016年 mac. All

博客园文章发布时间统计

我只是想看一下大家都是啥时候发博客而已!! 第一步: 把 https://www.cnblogs.com/ 的文章列表先拿下来,只有200页,时间范围是一个月多几天,不知道是不是全部的,就这样吧 代码很简单:https://github.com/dytttf/little_spider/blob/master/cnblogs/blog_index_spider.py 数据格式如下: data = { "https://www.cnblogs.com/xxx.html": { "

Android开发记录19-朋友圈动态发布时间计算

Android开发记录19-朋友圈动态发布时间计算 转载请注明:IT_xiao小巫,http://blog.csdn.net/wwj_748 如果觉得博文不错,请移步到2014年博客之星投票地址:http://vote.blog.csdn.net/blogstar2014/details?username=wwj_748#content 前面的一篇文章给大家关于时间知识点的分享http://blog.csdn.net/wwj_748/article/details/11536421,本篇博客笔者

ArcGIS 缓存技巧[1] 设置发布缓存的进程数量

1.选择服务 假设:我们的地图服务已经发布好,名称为 test.如下图所示: 1.1.2 - 设置发布缓存的进程数量 右键上图 test 服务,先停止服务,选择服务属性(service property)->选择"池化"选项卡. 如下图所示,我们设置最大实例数即可,理论上讲最优是 cpu 线程数+1:但服务器上一般还有其他应用,一般比 cpu 线程数少几个,影响不大.

Beta发布140字评论

Beta发布140字评论: 第一组:飞天小女警 此项目组的礼物挑选,具有很强的吸引力,面临的潜在用户也有很多,此次发布在界面上做出了很好的表现力,而且发布到云服务器上面. 第二组:金州勇士 金州勇士的在线考试系统,基本功能已经实现,学生可以考试,老师可以设定考试.学生可以在此网站上进行考试,具有实用性!并且发布到云服务器上面. 第三组:新峰 俄罗斯方块游戏基本上能够运行,在原有的基础上增加了新的功能,但是界面不是很友好! 第四组:天天向上 连连看游戏完成度较高,界面背景音乐都很玄,消除等都添加了

Sql批量修改帝国cms文章发布时间(需unix时间,否则会变为1970-01-01)

在迁移网站时,有时我们需要将帝国cms文章发表时间批量修改为当前时间,在帝国cms后台→系统设置→备份与恢复数据→执行sql语句: update phome_ecms_news set newstime = '2014-07-03'; (ps:phome这个是默认的数据库表前缀,如果创建数据库时有设置成其他的可以自行修改) 这样执行sql语句后刷新所有文章,你会发现时间变为了1970-01-01,这是因为newstime这个类型是int(10),必须是unix时间戳,所以我们必须先把当前时间转换

模仿微信朋友圈发布时间,将过去时间格式化成xx(秒/分/小时/天)前

模仿微信朋友圈发布时间,使用扩展方法将将过去时间展示成xx(秒/分/小时/天)前,以留言列表中的留言时间为例,先来看一下直接的时间展示效果(date.ToString("yyyy/MM/dd HH:mm:ss")) 感觉很一般,没有什么特别 下面 我们写一个拓展方法,将留言时间格式化成xx(秒/分/小时/天)前 decimal.Truncate(data)//取decimal整数位 public static class HtmlExpansion { //只格式化2天内的时间 pub

标题右边10px位置紧跟发布时间

一个ul列表,拥有若干li,内容是新闻标题,标题右边10px位置紧跟发布时间,当标题过长需要控制标题width,需要兼容ie6,不能用max-width h4{font-size:14px;height:27px;line-height:27px;padding-left:10px;border-bottom:#ddd 1px solid;} .news{width:310px;border:#ddd 1px solid;word-break:break-all; height:auto; ov