我们需要新建一个表,可以采用两种方式:
(1)手动建表
(2)使用flask_migrate.
说一下使用第二种方法建表的方式
(1)在models.py文件中添加如下代码
class Question(db.Model):
__tablename__ = 'question'
id = db.Column(db.Integer,primary_key =True,autoincrement = True)
title = db.Column(db.String(100),nullable= False)
content = db.Column(db.Text,nullable = False)
#now()获取的是服务器第一次运行的时间
# now是每次创建一个模型时获取当前时间
create_time = db.Column(db.DateTime,default = datetime.now)
author_id = db.Column(db.Integer,db.ForeignKey('user.id'))
author = db.relationship('User',backref = db.backref('questions'))
此时我们在终端中执行
>>>python manager.py db migrate
>>>python manager.py db upgrade
(2)之后我们可以登录MySQL查看,此时已经新建好了一张表
在manager.py中导入
from models import User,Question
(3)然后在主py文件中,完善
@app.route('/question',methods=['GET','POST'])
@login_required
def question():
if request.method == 'GET':
return render_template('question.html')
else:
title = request.form.get('title')
content = request.form.get('content')
question = Question(title = title,content = content)
user_id = session.get('user_id')
user = User.query.filter(User.id == user_id).first()
question.author = user
db.session.add(question)
db.session.commit()
return redirect(url_for('index'))
测试
输入内容,点击立即发布后,跳转到index.html此时并不会出现我们刚才发布的内容,因为这个功能还没完成.再看看数据库中question表,发现内容已经添加进去.OK