zoukankan      html  css  js  c++  java
  • Flask实战第64天:帖子加精和取消加精功能完成

    帖子加精和取消加精是在cms后台来设置的

    后台逻辑

    首页个帖子加精设计个模型表,编辑apps.models.py

    class HighlightPostModel(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")

    同步表到数据库

    python manage.py db migrate
    python manage.py db upgrade

    视图函数,编辑cms.views.py

    from apps.models import HighlightPostModel, PostModel
    ...
    
    @bp.route('/posts/')
    @login_required
    @permission_required(CMSPersmission.POSTER)
    def posts():
        post_list = PostModel.query.all()
        return render_template('cms/cms_posts.html', posts=post_list)
    
    
    @bp.route('/hpost/',methods=['POST'])
    @login_required
    @permission_required(CMSPersmission.POSTER)
    def hpost():
        post_id = request.form.get("post_id")
        if not post_id:
            return xjson.json_param_error('请传入帖子id!')
        post = PostModel.query.get(post_id)
        if not post:
            return xjson.json_param_error("没有这篇帖子!")
    
        highlight = HighlightPostModel()
        highlight.post = post
        db.session.add(highlight)
        db.session.commit()
        return xjson.json_success()
    
    
    @bp.route('/uhpost/',methods=['POST'])
    @login_required
    @permission_required(CMSPersmission.POSTER)
    def uhpost():
        post_id = request.form.get("post_id")
        if not post_id:
            return xjson.json_param_error('请传入帖子id!')
        post = PostModel.query.get(post_id)
        if not post:
            return xjson.json_param_error("没有这篇帖子!")
    
        highlight = HighlightPostModel.query.filter_by(post_id=post_id).first()
        db.session.delete(highlight)
        db.session.commit()
        return xjson.json_success()
    cms.views.py

    前端逻辑完成

    {% extends 'cms/cms_base.html' %}
    
    {% block title %}
        帖子管理-CMS管理系统
    {% endblock %}
    
    {% block page_title %}
        帖子管理
    {% endblock %}
    
    {% block head %}
        <script src="{{ url_for('static', filename='cms/js/posts.js')}}"></script>
    {% 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-default btn-xs highlight-btn">取消加精</button>
                            {% else %}
                                <button class="btn btn-default btn-xs highlight-btn">加精</button>
                            {% endif %}
                            <button class="btn btn-danger btn-xs">移除</button>
                        </td>
                    </tr>
                {% endfor %}
    
            </tbody>
        </table>
    {% endblock %}
    cms_posts.html
    $(function () {
        $(".highlight-btn").click(function () {
            var self = $(this);
            var tr = self.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/";
            }
            bbsajax.post({
                'url': url,
                'data': {
                    'post_id': post_id
                },
                'success': function (data) {
                    if(data['code'] == 200){
                        xtalert.alertSuccessToast('操作成功!');
                        setTimeout(function () {
                            window.location.reload();
                        },500);
                    }else{
                        xtalert.alertInfo(data['message']);
                    }
                }
            });
        });
    });
    posts.js

    前台页面,要加精的帖子加个标签,编辑front_index.html

  • 相关阅读:
    BAT脚本打印空行的使用方法
    Shell脚本关于屏幕输出的字符进行颜色控制的问题
    shell脚本中切换用户执行相应的命令或者shell脚本的方法
    Linux下执行的java命令重定向到文件中的方法
    解决Firefox浏览器每次打开都弹出导入向导的问题
    解决Ruby在IE11中报Unable to get browser (Selenium::WebDriver::Error::NoSuchWindowError)的错误
    6月28日 Django form组件 和 modelform组件
    6月27日 ajax
    6月25日 Django 分页 cookie、session
    6月26日 Django 中间件
  • 原文地址:https://www.cnblogs.com/sellsa/p/9751881.html
Copyright © 2011-2022 走看看