首页 > 其他 > 详细

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

时间:2019-12-02 22:52:43      阅读:124      评论:0      收藏:0      [点我收藏+]

 

模型

技术分享图片

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)

模板

技术分享图片

 

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

原文:https://www.cnblogs.com/zhongyehai/p/11973131.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!