前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BBS论坛(二十三)

BBS论坛(二十三)

作者头像
zhang_derek
发布2019-02-13 16:02:25
4220
发布2019-02-13 16:02:25
举报
文章被收录于专栏:有趣的django有趣的django

23.添加板块

(1)apps/models

代码语言:javascript
复制
class BoardModel(db.Model):
    __tablename__ = 'board'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(20), nullable=False)
    create_time = db.Column(db.DateTime, default=datetime.now)

(2)manage.py

代码语言:javascript
复制
from apps.models import BoardModel

生成数据库表

代码语言:javascript
复制
python manage.py db migrate

python manage.py db upgrade

(3)cms/forms.py

代码语言:javascript
复制
class AddBoardsForm(BaseForm):
    name=StringField(validators=[InputRequired(message='请输入版块名称'),Length(2,15,message='长度应在2-15个字符之间')])

class UpdateBoardForm(AddBoardsForm):
    board_id=IntegerField(validators=[InputRequired(message='请输入版块名称')])

(4)cms/views.py

代码语言:javascript
复制
@bp.route('/boards/')
@login_required
@permission_required(CMSPermission.BOARDER)
def boards():
    board_models=BoardModel.query.all()
    context={
        'boards':board_models
    }
    return render_template('cms/cms_boards.html',**context)

@bp.route('/aboards/',methods=['POST'])
@login_required
@permission_required(CMSPermission.BOARDER)
def aboards():
    form=AddBoardsForm(request.form)
    if form.validate():
        name=form.name.data
        board=BoardModel(name=name)
        db.session.add(board)
        db.session.commit()
        return restful.success()
    else:
        return restful.params_error(message=form.get_error())


@bp.route('/uboards/',methods=['POST'])
@login_required
@permission_required(CMSPermission.BOARDER)
def uboards():
    form=UpdateBoardForm(request.form)
    if form.validate():
        board_id=form.board_id.data
        name=form.name.data
        board=BoardModel.query.get(board_id)
        if board:
            board.name=name
            db.session.commit()
            return restful.success()
        else:
            return restful.params_error(message='没有这个版块')
    else:
        return restful.params_error(message=form.get_error())


@bp.route('/dboards/',methods=['POST'])
@login_required
@permission_required(CMSPermission.BOARDER)
def dboards():
    board_id=request.form.get('board_id')
    if not board_id:
        return restful.params_error(message='请传入版块ID')
    board=BoardModel.query.get(board_id)
    if board:
        db.session.delete(board)
        db.session.commit()
        return restful.success()
    else:
        return restful.params_error(message='没有这个版块')

(5)cms/js/boards.js

代码语言:javascript
复制
$(function () {
    $('#add_board_btn').on('click', function () {
        event.preventDefault();
        zlalert.alertOneInput({
            'title':'添加板块',
            'text': '请输入板块名称',
            'placeholder': '版块名称',
            'confirmCallback': function (inputValue) {
                zlajax.post({
                    'url': '/cms/aboards/',
                    'data': {
                        'name': inputValue
                    },
                    'success': function (data) {
                        if (data['code'] == 200) {
                            window.location.reload();
                        } else {
                            zlalert.alertInfo(data['message']);
                        }
                    }
                });

            }
        })
    });

});

(6)cms/cms_boards.html

代码语言:javascript
复制
{% extends 'cms/cms_base.html' %}
{%  from'common/_macros.html' import static %}
{% block title %}
    板块管理
{% endblock %}

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

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


{% block main_content %}
    <div class="top-box">
        <button class="btn btn-warning" id="add_board_btn" style="float: right">添加新版块</button>
    </div>

    <table class="table table-bordered">
        <thead>
        <tr>
            <th>版块名称</th>
            <th>帖子数量</th>
            <th>创建时间</th>
            <th>操作</th>
        </tr>
        </thead>

        <tbody>
        {% for board in boards %}
            <tr data-name="{{ board.name }}" data-id="{{ board.id }}">
                <td>{{ board.name }}</td>
                <td>0</td>
                <td>{{ board.create_time }}</td>
                <td>
                    <button class="btn btn-default edit-board-btn">编辑</button>
                    <button class="btn btn-danger delete-board-btn">删除</button>
                </td>
            </tr>

        {% endfor %}
        </tbody>
    </table>

{% endblock %}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 23.添加板块
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档