zoukankan      html  css  js  c++  java
  • 27-----BBS论坛

    BBS论坛(二十七)

    27.首页帖子列表布局完成

    (1)apps/models.py

    把帖子跟用户关联起来

    class PostModel(db.Model):
        __tablename__ = 'post'
        id = db.Column(db.Integer, primary_key=True, autoincrement=True)
        title = db.Column(db.String(200), nullable=False)
        content = db.Column(db.Text, nullable=False)
        create_time = db.Column(db.DateTime, default=datetime.now)
        board_id = db.Column(db.Integer, db.ForeignKey('board.id'))
        board = db.relationship('BoardModel', backref='posts')
        author_id = db.Column(db.String(50), db.ForeignKey('front_user.id'), nullable=False)
        author = db.relationship('FrontUser', backref='posts')

    把之前数据库里面的帖子都删了,migrate、upgrade后重新发表新帖子

    (2)front/views.py

    apost添加author

    @bp.route('/apost/', methods=['POST', 'GET'])
    @login_requried
    def apost():
        #....
    
                post.author = g.front_user   
        #....
                return restful.params_error(message=form.get_error())

    index里面渲染所有的帖子给前端

    @bp.route('/')
    def index():
        banners = BannerModel.query.order_by(BannerModel.priority.desc()).limit(4)
        boards = BoardModel.query.all()
        posts = PostModel.query.all()
        context = {
            'banners':banners,
            'boards':boards,
            'posts':posts,
        }
        return render_template('front/front_index.html',**context)

    (4)front/front_index.html

    <ul class="post-group-head">
                        <li class="active"><a href="#">最新</a></li>
                        <li><a href="#">精华帖子</a></li>
                        <li><a href="#">点赞最多</a></li>
                        <li><a href="#">评论最多</a></li>
                    </ul>
    
                    <ul class="post-list-group">
                        {% for post in posts %}
                            <li>
                                <div class="author-avatar-group">
                                    <img src="{{ post.author.avatar or url_for('static',filename='common/images/logo.jpg') }}" alt="">
                                </div>
    
                                <div class="post-info-group">
                                    <p class="post-title">{{ post.title }}</p>
                                    <p class="post-info">
                                        <span>作者:{{ post.author.username }}</span>
                                        <span>发表时间:{{ post.create_time }}</span>
                                        <span>评论:0</span>
                                        <span>阅读数 :0</span>
                                    </p>
                                </div>
                            </li>
                        {% endfor %}
                    </ul>

    (5)front/css/front_index.css

    *{
        margin: 0;
        padding:0;
        vertical-align: baseline;
    }
    
    .post-group{
        border: 1px solid #ddd;
        margin-top: 20px;
        overflow: hidden;
        border-radius: 5px;
        padding: 10px;
    }
    
    .post-group-head{
        overflow: hidden;
        list-style: none;
    }
    
    .post-group-head li{
        float: left;
        padding: 5px 10px;
    }
    
    .post-group-head a{
        color: #333;
    }
    
    .post-group-head li.active{
        background: #ccc;
    }
    
    
    
    .post-list-group{
        margin-top: 20px;
    }
    
    .post-list-group li{
        overflow: hidden;
        padding-bottom: 20px;
    }
    
    .author-avatar-group{
        float: left;
    }
    
    .author-avatar-group img{
        width: 50px;
        height: 50px;
        border-radius: 50%;
    }
    
    .post-info-group{
        float: left;
        margin-left: 10px;
        border-bottom: 1px solid #e6e6e6;
        width: 85%;
        padding-bottom: 10px;
    }
    
    .post-info-group .post-info{
        margin-top: 10px;
        font-size: 12px;
        color: #8c8c8c;
    }
    
    .post-info span{
        margin-right: 10px;
    }

  • 相关阅读:
    软件需求分析——阅读笔记
    第二次冲刺阶段 tenth day
    第16周周总结
    第二次冲刺阶段 ninth day
    判断各种数据类型的方法总结
    vue中8种组件通信方式
    字符串常用方法总结
    JS中轻松遍历对象属性的几种方式
    fetch请求和ajax请求
    js 文件下载,当前页下载,新标签下载____后端返回 GET/POST 文件流,下载文件
  • 原文地址:https://www.cnblogs.com/edeny/p/10021189.html
Copyright © 2011-2022 走看看