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 %} <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论坛(三十一)的主要内容,如果未能解决你的问题,请参考以下文章