Python 将来自多个WTForms的数据记录到Flask Sqlalchemy中的sqlite3数据库中
好的,请帮忙。尽管我知道答案必须很简单,但我还是在拔头发 在我的Alchemy web界面项目中有两种形式:Post和Survey Post是我创建的第一个页面,以确保我能够有效地写入数据库。它位于主页/索引页上。使用Post类从主页记录数据是我可以成功做到的事情 创建Post之后,我想为我的项目创建第一个表单。这种形式/类别称为调查。我的数据库中存在一个调查表;我已经成功地创建了我需要的所有列,并将表迁移到了上面。我也可以在我的网页上看到调查结果 所以,让我们点击调查,果然,我的表格就在那里。 太好了。好的,现在让我们添加一些数据 我点击submit,网页会自动返回主页/索引屏幕,并显示一条闪光消息“您的帖子现在已上线!”,这是邮寄表格,不是调查表格。在终端中,弹出以下代码Python 将来自多个WTForms的数据记录到Flask Sqlalchemy中的sqlite3数据库中,python,sqlite,flask-sqlalchemy,flask-wtforms,wtforms,Python,Sqlite,Flask Sqlalchemy,Flask Wtforms,Wtforms,好的,请帮忙。尽管我知道答案必须很简单,但我还是在拔头发 在我的Alchemy web界面项目中有两种形式:Post和Survey Post是我创建的第一个页面,以确保我能够有效地写入数据库。它位于主页/索引页上。使用Post类从主页记录数据是我可以成功做到的事情 创建Post之后,我想为我的项目创建第一个表单。这种形式/类别称为调查。我的数据库中存在一个调查表;我已经成功地创建了我需要的所有列,并将表迁移到了上面。我也可以在我的网页上看到调查结果 所以,让我们点击调查,果然,我的表格就在那里
127.0.0.1 - - [24/Jan/2020 14:59:40] "POST / HTTP/1.1" 302 -
127.0.0.1 - - [24/Jan/2020 14:59:40] "GET /index HTTP/1.1" 200 -
这与我使用Post表单时得到的输出类似。但是,数据库中的“我的测量表”中未保存任何内容
>>> Survey.query.all()
[]
我可以把东西添加到我的Post表中,直到我脸色发青,但是调查表似乎不起作用。现在我确信这是件愚蠢的事。比如,我需要以不同的方式标记我的提交按钮,或者如果我想使用其他表单,我不应该在索引页上有表单,或者我错过了将代码链接回主页的某个地方,尽管我已经看了这段代码好几天了,但我找不到它
帮忙?我的最终目的是添加大量这些表,以帮助管理一个包含大量表和关系的相当庞大的数据库。如果我不能得到两个好的状态,我不能说我充满信心
大部分登录代码已从下面删除,因为它工作正常
__初始值:
from flask import Flask, render_template, request, redirect
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate=Migrate(app,db)
login = LoginManager(app)
login.login_view = 'login'
from app import routes, models
forms.py:
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,BooleanField,SubmitField, TextAreaField, DateField
from wtforms.validators import DataRequired, Length
class PostForm(FlaskForm):
post = TextAreaField('Say something')
submit = SubmitField('Submit')
class SurveyForm(FlaskForm):
surveyname=StringField('Survey Name', validators=[DataRequired()])
surveycode=StringField('Survey Code', validators=[DataRequired()])
embark=DateField('Date Embark: format=yyyy-mm-dd')
dock=DateField('Date Return: format=yyyy-mm-dd')
vessel=StringField('Vessel Name')
submit=SubmitField('Submit')
routes.py:
from flask import render_template, flash, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
from flask_login import current_user, login_user, logout_user, login_required
from werkzeug.urls import url_parse
from app import app, db
from app.models import User, Post, Survey
from app.forms import LoginForm, PostForm, SurveyForm
@app.route('/', methods=['GET','POST'])
@app.route('/index',methods=['GET','POST'])
@login_required
def index():
form=PostForm()
if form.validate_on_submit():
post=Post(body=form.post.data, author=current_user)
db.session.add(post)
db.session.commit()
flash('Your post is now live!')
return redirect(url_for('index'))
return render_template('index.html', title='Home',form=form)
@app.route('/survey', methods=["GET","POST"])
def survey():
form=SurveyForm(request.form)
if form.validate_on_submit():
survey=Survey(surveyname=form.surveyname.data,
surveycode=form.surveycode.data,
embark=form.embark.data,
dock=form.dock.data,
vessel=form.vessel.data)
db.session.add(survey)
db.session.commit()
return redirect(url_for('survey'))
return render_template('survey.html', title='Survey', form=form)
models.py:
from datetime import datetime
from app import db, login
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
body = db.Column(db.String(140))
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
def __repr__(self):
return '<Post {}>'.format(self.body)
class Survey(db.Model):
id = db.Column(db.Integer, primary_key=True)
surveyname = db.Column(db.String(140), nullable=False)
surveycode = db.Column(db.String(140), nullable=False)
embark = db.Column(db.DateTime, default=datetime.utcnow)
dock = db.Column(db.DateTime, default=datetime.utcnow)
vessel = db.Column(db.String(140))
def __repr__(self):
return '<Survey {}>'.format(self.surveycode)
从日期时间导入日期时间
从应用程序导入数据库,登录
班级职位(db.Model):
id=db.Column(db.Integer,主键=True)
body=db.Column(db.String(140))
timestamp=db.Column(db.DateTime,index=True,default=DateTime.utcnow)
user\u id=db.Column(db.Integer,db.ForeignKey('user.id'))
定义报告(自我):
返回“”。格式(self.body)
班级调查(db.Model):
id=db.Column(db.Integer,主键=True)
surveyname=db.Column(db.String(140),nullable=False)
surveycode=db.Column(db.String(140),nullable=False)
bounk=db.Column(db.DateTime,默认为DateTime.utcnow)
dock=db.Column(db.DateTime,默认值=DateTime.utcnow)
容器=分贝柱(分贝串(140))
定义报告(自我):
返回“”。格式(self.surveycode)
在调查表单的html中,
元素是否具有action
属性?它应该包含表单发布到的url。如果它是空的,它可能会发布到/
。啊,非常感谢。我错过了一些简单的东西。它被路由回“/”。现在,它正在尽我所能轻松地写入数据库。