Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将来自多个WTForms的数据记录到Flask Sqlalchemy中的sqlite3数据库中_Python_Sqlite_Flask Sqlalchemy_Flask Wtforms_Wtforms - Fatal编程技术网

Python 将来自多个WTForms的数据记录到Flask Sqlalchemy中的sqlite3数据库中

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之后,我想为我的项目创建第一个表单。这种形式/类别称为调查。我的数据库中存在一个调查表;我已经成功地创建了我需要的所有列,并将表迁移到了上面。我也可以在我的网页上看到调查结果 所以,让我们点击调查,果然,我的表格就在那里

好的,请帮忙。尽管我知道答案必须很简单,但我还是在拔头发

在我的Alchemy web界面项目中有两种形式:Post和Survey

Post是我创建的第一个页面,以确保我能够有效地写入数据库。它位于主页/索引页上。使用Post类从主页记录数据是我可以成功做到的事情

创建Post之后,我想为我的项目创建第一个表单。这种形式/类别称为调查。我的数据库中存在一个调查表;我已经成功地创建了我需要的所有列,并将表迁移到了上面。我也可以在我的网页上看到调查结果

所以,让我们点击调查,果然,我的表格就在那里。

太好了。好的,现在让我们添加一些数据

我点击submit,网页会自动返回主页/索引屏幕,并显示一条闪光消息“您的帖子现在已上线!”,这是邮寄表格,不是调查表格。在终端中,弹出以下代码

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。如果它是空的,它可能会发布到
/
。啊,非常感谢。我错过了一些简单的东西。它被路由回“/”。现在,它正在尽我所能轻松地写入数据库。