BBS论坛(三十一)

Posted derek1184405959

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BBS论坛(三十一)相关的知识,希望对你有一定的参考价值。

31.帖子加精和取消加精功能完成

(1)apps/models.py

class HighLight(db.Model):
    __tablename__=highlight_post
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    post_id=db.Column(db.Integer,db.ForeignKey(post.id))
    create_time=db.Column(db.DateTime,default=datetime.now)

    post=db.relationship(PostModel,backref=highlight)

(2)cms/views.py

@bp.route(/posts/)
@login_required
@permission_required(CMSPermission.POSTER)
def posts():
    context = {
        posts: PostModel.query.all()
    }
    return render_template(cms/cms_posts.html,**context)


@bp.route(/hpost/,methods=[POST])
@login_required
@permission_required(CMSPermission.POSTER)
def hpost():
    post_id=request.form.get(post_id)
    if not post_id:
        return restful.params_error(message=请传入帖子id)
    post=PostModel.query.get(post_id)
    if not post:
        return restful.params_error(message=没有这篇帖子)
    highlight=HighLight()
    highlight.post=post
    db.session.add(highlight)
    db.session.commit()
    return restful.success()



@bp.route(/uhpost/,methods=[POST])
@login_required
@permission_required(CMSPermission.POSTER)
def uhpost():
    post_id = request.form.get(post_id)
    if not post_id:
        return restful.params_error(message=请传入帖子id)
    post = PostModel.query.get(post_id)
    if not post:
        return restful.params_error(message=没有这篇帖子)
    print(post_id)
    highlight=HighLight.query.filter_by(post_id=post_id).first()
    print(highlight)
    db.session.delete(highlight)
    db.session.commit()
    return restful.success()

(3)cms_posts.html

{% extends ‘cms/cms_base.html‘ %}
{% from ‘common/_macros.html‘ import static %}
{% block title %}
    帖子管理
{% endblock %}

{% block head %}
<script src="{{ static(‘cms/js/posts.js‘) }}"></script>
{% endblock %}

{% block page_title %}
    {{ self.title() }}
{% endblock %}

{% block main_content %}
    <table class="table table-bordered">
        <thead>
        <tr>
            <th>标题</th>
            <th>发布时间</th>
            <th>版块</th>
            <th>作者</th>
            <th>操作</th>
        </tr>
        </thead>
        <tbody>
        {% for post in posts %}
            <tr data-id={{ post.id }} data-highlight={{ 1 if post.highlight else 0 }}>
                <td><a target="_blank" href="{{ url_for(‘front.post_detail‘,post_id=post.id) }}">{{ post.title }}</a>
                </td>
                <td>{{ post.create_time }}</td>
                <td>{{ post.board.name }}</td>
                <td>{{ post.author.username }}</td>
                <td>
                    {% if post.highlight %}
                        <button class="btn btn-info btn-xs highlight-btn">取消加精</button>
                    {% else %}
                        <button class="btn btn-danger btn-xs highlight-btn">加精</button>
                    {% endif %}
                    &nbsp;&nbsp;&nbsp;<button class="btn btn-default btn-xs">移除</button>
                </td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
{% endblock %}

(4)cms/js/posts.js

$(function(){
    $(‘.highlight-btn‘).on(‘click‘,function(){
       var $this=$(this);
       var tr=$this.parent().parent();
       var post_id=tr.attr(‘data-id‘);
       var highlight=parseInt(tr.attr(‘data-highlight‘));
       var url=‘‘;
        if(highlight){
           url=‘/cms/uhpost/‘
        }else{
            url=‘/cms/hpost/‘
        }
        zlajax.post({
            ‘url‘:url,
            ‘data‘:{
                ‘post_id‘:post_id
            },
            ‘success‘:function(data){
                if(data[‘code‘]==200){
                    zlalert.alertSuccessToast(‘操作成功‘);
                    setTimeout(function(){
                        window.location.reload();
                    },500);
                }else{
                    zlalert.alertInfo(data[‘message‘]);
                }
            }
        })
    });
});

技术分享图片

 

以上是关于BBS论坛(三十一)的主要内容,如果未能解决你的问题,请参考以下文章

开始写游戏 --- 第三十一篇

Thinkphp官网最新视频教程

20-----BBS论坛

17-----BBS论坛

Swift系列三十一 - 多线程

[系统安全] 三十一.恶意代码检测恶意代码攻击溯源及恶意样本分析