我试图创建一个简单的Flask应用程序,它利用Flask SQLAlchemy和WTForms。目标是有一个简单的表单,在提交时将信息推送到数据库,并在表单底部显示数据库中的当前条目。理想情况下,在提交表单信息时,我希望推送到数据库的信息立即反映在同一页面上。以下是我目前拥有的:
from flask import Flask, render_template, redirect, url_for, request
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField
from wtforms.validators import InputRequired, Email, Length
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://(REMOVED FOR QUESTION)/testing'
app.config['SECRET_KEY'] = 'abcd'
Bootstrap(app)
db = SQLAlchemy(app)
class ActivityPanel(FlaskForm): #WTF FORM DEFINITION
text_title = StringField('Text Info', validators=[InputRequired()])
class Alerts(UserMixin, db.Model): #FLASK SQL ALCHEMY DEFINITION
InputID = db.Column(db.Integer, primary_key = True, autoincrement=True)
text_alert = db.Column(db.String(100), nullable = False, server_default="None")
db.create_all()
@app.route('/alerts', methods=['GET', 'POST'])
def alerts1():
form = ActivityPanel()
if form.validate_on_submit():
alert_object = Alerts(text_alert=form.text_title.data)
db.session.add(alert_object)
db.session.commit()
database_pull = Alerts.query.all()
return render_template('test.html', form = form, database_pull=database_pull)
if __name__ == '__main__':
app.run()
模板的代码如下:
^{pr2}$从目前的情况来看,我遇到的主要问题是,获取数据库中所有内容的数据库查询pull对象只在flask程序启动时获取并存储在数据库中的信息。一旦启动,即使我向数据库添加了更多数据,查询对象也不会反映新添加的信息。最后,我必须关闭应用程序并重新启动它,以便对象使用新的数据库条目进行更新。在
我希望有人能回答,如果有一个简单的方法,我允许数据库拉对象从数据库实时抓取内容,而不是一开始。根据我所读到的,这个问题与SQLAlchemy在每个事务中更新一次对象的状态有关。我试图使对象过期/刷新会话,但它不适用于Flask SQLAlchemy。如有任何帮助,我们将不胜感激。在
目前没有回答
相关问题 更多 >
编程相关推荐