位置:第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按收藏数量进行重新排序,这个页面逻辑应该有问题吧?
正常的操作应该要把所有记录按收藏数量排序后分页传入模板,仅仅对当页的对象进行重新排序似乎不妥。