在Flask中制作博客首页的分类功能(一)的基础上,继续下面的教程。
发布文章的时候会为文章添加一些标签(tag),这些tag需要和数据库中Category表的tag进行比较,如果已经存在该tag,那么需要将新发表文章的tag与已存在的表格进行对应,如果不存在则要新建一个category表。
首先在python shell中执行操作。
from sql_test import db, Post, Category
category = Category.query.filter_by(tag='Python').first()
category --> <Category 'Python'> # 查询到tag=‘Python’的表
category.count += 1
pp = Post(title='hello one', body='hello hello', category=category) #新建post表与原先的category对应
db.session.add(pp)
db.session.commit()
没有问题之后在视图函数中增加该功能:
@main.route('/write', methods=['GET', 'POST'])
@login_required
def write():
form = PostForm()
category = Category.query.filter_by(tag=form.category.data).first()
if form.validate_on_submit():
if category:
category.count += 1
post = Post(title=form.title.data, body=form.body.data,
summary=form.summary.data, category=category)
else:
post = Post(title=form.title.data, body=form.body.data,
summary=form.summary.data, category=Category(form.category.data))
db.session.add(post)
flash('You have posted a blog')
return redirect(url_for('main.post', title=post.title))
return render_template('write.html', form=form)