第9章图片标签图片排序的实现逻辑是否有问题?


#1

位置:第9章9.7.7图片标签第2小节图片排序
书中代码:

@main_bp.route('/tag/<int:tag_id>', defaults={'order': 'by_time'})
@main_bp.route('/tag/<int:tag_id>/<order>')
def show_tag(tag_id, order):
    tag = Tag.query.get_or_404(tag_id)
    page = request.args.get('page', 1, type=int)
    per_page = current_app.config['APP_PHOTO_PER_PAGE']
    order_rule = 'time'
    pagination = Photo.query.with_parent(tag).order_by(Photo.timestamp.desc()).paginate(page, per_page)
    photos = pagination.items

    if order == 'by_collects':
        photos.sort(key=lambda x: len(x.collectors), reverse=True)
        order_rule = 'collects'
    return render_template('main/tag.html', tag=tag, pagination=pagination, photos=photos, order_rule=order_rule)

在页面中选择按收藏数量排序后,新的请求页面还是会按时间顺序查询后分页,仅仅会对分页对象当前页的items按收藏数量进行重新排序,这个页面逻辑应该有问题吧?
正常的操作应该要把所有记录按收藏数量排序后分页传入模板,仅仅对当页的对象进行重新排序似乎不妥。


#2

是的,你看得好细:grinning:


#3

多谢指出,这里的确需要更正 :sweat_smile: