def show(): all_pages = request.args.get('all_pages', '') search = False q = request.args.get('q') if q: search = True try: page = int(request.args.get('page', 1)) except ValueError: page = 1 questions_all = [] key_words = '' # 搜索关键字 if request.method == 'POST': key_words = request.form.get('key_word') if key_words: indexs = db.index.find_one({key_words: {'$exists': True}}) if indexs: ids = [ObjectId(id) for id in indexs[key_words].keys()] questions_all = db.zhihu.find({'_id': {"$in": ids}}).sort('answer_count', -1) if not questions_all: if all_pages: questions_all = db.zhihu.find().sort('answer_count', -1) else: questions_all = db.zhihu.find({'created': {"$gt": days_ago}}).sort('answer_count', -1) #如果最近几天没有数据(没有爬数据),则显示前50条数据 if not questions_all.count(): questions_all = db.zhihu.find().sort('created', -1).limit(50) pagination = Pagination(page=page, total=questions_all.count(True), search=search, record_name='questions') pagination.per_page = 30 #每页30个条目 #pagination插件有问题,这里参考boostrap分页的写法 links = str(pagination.links).replace('<div class="pagination"><ul>', '<div><ul class="pagination">') questions = questions_all[(page-1)*pagination.per_page:page*pagination.per_page] return render_template('base.html', questions=questions, pagination=pagination, links=links, key_words=key_words)