前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BBS论坛(二十八)

BBS论坛(二十八)

作者头像
zhang_derek
发布2019-02-13 15:57:03
3560
发布2019-02-13 15:57:03
举报
文章被收录于专栏:有趣的django有趣的django

28.1.帖子分页功能完成

(1)manage.py

通过命令生成100个帖子,用于测试

代码语言:javascript
复制
@manager.command
def create_test_post():
    for x in range(1,100):
        title='我是标题%s'%x
        content='我是内容,我的编号是%s'%x
        board=BoardModel.query.first()
        author=FrontUser.query.first()
        post=PostModel(title=title,content=content)
        post.board=board
        post.author=author
        db.session.add(post)
        db.session.commit()
    print('测试帖添加成功')

(2)front/views.py

代码语言:javascript
复制
@bp.route('/')
def index():
    banners = BannerModel.query.order_by(BannerModel.priority.desc()).limit(4)
    boards = BoardModel.query.all()
    #获取当前页码数
    page = request.args.get(get_page_parameter(), type=int, default=1)
    # 显示10条帖子
    start = (page - 1) * config.PER_PAGE
    end = start + config.PER_PAGE
    posts = PostModel.query.slice(start, end)
    # bs_version=3:表示用Bootstrap v3版本
    pagination = Pagination(bs_version=3,page=page,total=PostModel.query.count(),
                            outer_window = 0, inner_window = 2)

    context = {
        'banners':banners,
        'boards':boards,
        'posts':posts,
        'pagination':pagination,
    }
    return render_template('front/front_index.html',**context)

(3)front_index/html

代码语言:javascript
复制
                <div style="text-align: center">
                    {{ pagination.links }}
                </div>

28.2.板块过滤功能完成

(1)front_index.html

代码语言:javascript
复制
 <div class="sm-container">
            <div style="margin-bottom: 10px;">
                <a class="btn btn-warning btn-block" href="{{ url_for('front.apost') }}" id="add-post-btn">发布帖子</a>
            </div>

            <div class="list-group">
                {% if current_board %}
                    <a href="/" class="list-group-item">所有版块</a>
                {% else %}
                    <a href="/" class="list-group-item active">所有版块</a>
                {% endif %}
                {% for board in boards %}
                    {% if board.id==current_board %}
                        <a href="{{ url_for('front.index',bd=board.id) }}"
                           class="list-group-item active">{{ board.name }}</a>
                    {% else %}
                        <a href="{{ url_for('front.index',bd=board.id) }}" class="list-group-item">{{ board.name }}</a>
                    {% endif %}
                {% endfor %}
            </div>
        </div>

(2)front/views.py

代码语言:javascript
复制
@bp.route('/')
def index():
    board_id = request.args.get('bd', type=int, default=None)
    # 获取当前页码数
    page = request.args.get(get_page_parameter(), type=int, default=1)
    banners = BannerModel.query.order_by(BannerModel.priority.desc()).limit(4)
    boards = BoardModel.query.all()
    # 显示10条帖子
    start = (page - 1) * config.PER_PAGE
    end = start + config.PER_PAGE
    posts = None
    total = 0
    if board_id:
        query_obj = PostModel.query.filter_by(board_id=board_id)
        posts = query_obj.slice(start,end)
        total = query_obj.count()
    else:
        posts = PostModel.query.slice(start, end)
        total = PostModel.query.count()
    # bs_version=3:表示用Bootstrap v3版本
    pagination = Pagination(bs_version=3,page=page,total=total,outer_window = 0, inner_window = 2)

    context = {
        'banners':banners,
        'boards':boards,
        'posts':posts,
        'pagination':pagination,
        'current_board':board_id      #把当前板块id传到前端,前端添加“active”样式
    }
    return render_template('front/front_index.html',**context)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 28.1.帖子分页功能完成
  • 28.2.板块过滤功能完成
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档