flask - 数据尚未插入通过 WTForms 收集的数据库
问题描述
我是烧瓶和烧瓶-sqlalchemy 的新手。问题是通过 wtforms 输入新记录(地点)时,闪烁消息闪烁成功,但是,数据未插入数据库。我需要你的帮助。
POST 路径: import json import dateutil.parser import babel from flask import Flask, render_template, request, Response, flash, redirect, url_for from flask_moment import Moment from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate import logging from logging import Formatter, FileHandler from flask_wtf import FlaskForm from forms import * from models import db, Venue, Artist, Show import sys
app = Flask(__name__)
moment = Moment(app)
app.config.from_object('config')
# TODO: connect to a local postgresql database
db.init_app(app)
migrate = Migrate(app, db)
@app.route('/venues/create', methods=['POST'])
def create_venue_submission():
error = False
form = VenueForm()
if form.validate_on_submit():
venue=Venue(name=form.name.data,
city=form.city.data,
state=form.state.data,
address=form.address.data,
phone=form.phone.data,
image_link=form.image_link.data,
genres=form.genres.data,
facebook_link=form.facebook_link.data)
form.populate_obj(venue)
db.session.add(venue)
db.session.commit()
return redirect(url_for('forms/new_venue.html'))
if not error:
flash('Venue ' + request.form['name'] + ' was successfully listed!')
if error:
# TODO: on unsuccessful db insert, flash an error instead.
flash('An error occurred. Venue ' + request.form['name'] + ' could not be listed.')
return render_template('pages/home.html', form=form)
模型代码片段:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
db = SQLAlchemy()
class Venue(db.Model):
__tablename__ = 'venues'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, nullable=False)
city = db.Column(db.String(120), nullable=False)
state = db.Column(db.String(120), nullable=False)
address = db.Column(db.String(120), nullable=False)
phone = db.Column(db.String(120))
facebook_link = db.Column(db.String(120))
website = db.Column(db.String(120))
def __repr__(self):
return f'<Venue id: {self.id}, name: {self.name}>'
后台成功消息:
前端成功消息: 前端闪现消息
数据库状态:
这非常令人困惑,无法找到问题所在。
解决方案
你的代码永远不会失败你的错误检查——你error=False
在函数的顶部设置了,但你的函数中没有代码可以将它翻转到error=True
,所以if not error:
总是会运行,发送一条成功的消息。
我怀疑,没有看到您的代码,表单验证失败(如果您是新手,您可能忘记了{{ form.hidden_tag() }}
表单模板中的
推荐阅读
- python - Ray init() 非常慢
- python-3.x - 如何在条件列表中矢量化dataframe pandas daframe?
- laravel - 为什么 Vue 将我的 v-if 评估为假,尽管它是真的?
- json - Azure 数据工厂部署中的 CICD 发布管道问题
- c++ - 将int数组转为矩阵类完成算子重载的问题
- r - 错误:美学必须是长度 1 或与数据相同 (9):标签
- c# - 使 ProcessCmdKey 异步等待 - C#
- javascript - 从另一个数组内的数组中获取所有值
- linux - 使用 jumpserver 选项通过 ssh 使用 sshpass 登录
- performance - Levenshtein 距离算法的性能是否优于 Needleman Wunsch 算法?