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;
}
复制代码

posted @   王竹笙  阅读(166)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示