• 一百三十六:CMS系统之发布帖子后台逻辑


    模型

    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')

    manager.py中导入模型

    映射到数据库

    python manager.py db migrate
    python manager.py db upgrade

    登录验证装饰器

    from flask import session, redirect, url_for, g
    from functools import wraps
    import config


    def login_required(func):
    """ 登录验证 """

    @wraps(func)
    def inner(*args, **kwargs):
    if config.FRONT_USER_ID in session:
    return func(*args, **kwargs)
    else:
    return redirect(url_for('front.signin'))

    return inner

    form

    class AddPostForm(BaseForm):
    title = StringField(validators=[InputRequired(message='请输入标题')])
    content = StringField(validators=[InputRequired(message='请输入内容')])
    board_id = IntegerField(validators=[InputRequired(message='请输入板块id')])

    视图

    @bp.route('/apost/', methods=['GET', 'POST'])
    @login_required
    def apost():
    """ 添加帖子 """
    form = AddPostForm(request.form)
    if request.method == 'POST':
    if form.validate():
    title = form.title.data
    content = form.content.data
    board_id = form.board_id.data
    board = BoardModel.query.get(board_id)
    if not board:
    return restful.params_error(message='没有这个板块')
    post = PostModel(title=title, content=content)
    post.board = board
    db.session.add(post)
    db.session.commit()
    return restful.success()
    else:
    return restful.params_error(form.get_error())
    boards = BoardModel.query.all()
    return render_template('front/front_apost.html', boards=boards)

    模板

  • 相关阅读:
    506Relative Ranks(LeetCode)
    计算二进制中1的个数
    vector<vector<int>> 简单知识介绍
    167. Two Sum II
    561. Array Partition I(LeetCode)
    sizeof 用法部分总结
    530. Minimum Absolute Difference in BST(LeetCode)
    JS计算两个日期之间的天数
    路演会上会登记结论的委员信息页面
    eclipse安装SVN插件
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11973131.html
Copyright © 2020-2023  润新知