Javascript 我的html按钮没有';t更新数据库(Flaskapp)中的数据,我的代码有什么问题?

Javascript 我的html按钮没有';t更新数据库(Flaskapp)中的数据,我的代码有什么问题?,javascript,python,html,python-3.x,flask-wtforms,Javascript,Python,Html,Python 3.x,Flask Wtforms,因此,我在我的web应用程序中创建和处理表单。我有一个所有用户的个人资料页面(显示他们的名字、姓氏、电子邮件等)。我试图添加一个“编辑”按钮,一旦他们点击它,他们就会被带到更新表单页面,在那里他们输入新的详细信息并点击更新按钮,一旦他们这样做了,他们就会被带回到他们的个人资料页面,但这次他们输入了新的详细信息(一个简单的编辑按钮) 更新表单的myforms.py类是: class Updateform(FlaskForm): email = StringField("Email

因此,我在我的web应用程序中创建和处理表单。我有一个所有用户的个人资料页面(显示他们的名字、姓氏、电子邮件等)。我试图添加一个“编辑”按钮,一旦他们点击它,他们就会被带到更新表单页面,在那里他们输入新的详细信息并点击更新按钮,一旦他们这样做了,他们就会被带回到他们的个人资料页面,但这次他们输入了新的详细信息(一个简单的编辑按钮)

更新表单的my
forms.py
类是:

class Updateform(FlaskForm):
    email = StringField("Email", validators=[DataRequired(), Email()])
    fname = StringField("First Name", validators=[DataRequired(), Length(min=2, max=20)])
    lname = StringField("Last Name", validators=[DataRequired(), Length(min=2, max=20)])
    phoneno = StringField("Phone Number", validators=[DataRequired()])
    submit = SubmitField("Update account")
我到html的路线是:

@auth.route("/updateform", methods=["GET", "POST"])
def updateform():
    form = Updateform()
    if(form.validate_on_submit()):
        user: User = User.select().where(User.email == form.email.data).first()
        user.email = form.email.data
        user.fname = form.fname.data
        user.lname = form.lname.data
        user.phoneno = form.phoneno
        user.save()
        flash('Your account has been updated', 'success')
        return redirect (url_for("user.profile"))
    return render_template("user/formupdate.html", form=form)
下面是更新表单的模板((
formupdate.html
):

{%extends“admin layout.html”%}
{%block content%}
{%来自“\u formhelpers.html”导入呈现\u字段%}
更新表单
{{form.hidden_tag()}}
{{render_字段(form.fname,class=“form control”)}
{{render_字段(form.lname,class=“form control”)}
{{render_字段(form.email,class=“form control”)}
{{render_字段(form.phoneno,class=“form control”)}
{%endblock内容%}
我的问题是,当我在输入新的详细信息后单击“更新”按钮时,没有任何变化-页面会按预期返回到配置文件页面,但详细信息仍然相同,并且任何地方都看不到任何新的详细信息


我做错了什么以及如何修复它?

检查
user.save()
的实现,以获取将更新提交到数据库的调用。下面是我的一条比较路线,请注意
db.session.commit()

从flask导入渲染模板、flash、重定向、url
从flask\u登录需要导入登录
从应用程序导入数据库
从app.artists导入bp
从app.artists.forms导入ArtistForm
从app.main.forms导入空表单
从app.models导入艺术家
@路由('/',方法=['GET','POST'])
@需要登录
def概述():
create_form=ArtistForm()
delete_form=EmptyForm()
如果创建表单。在提交()时验证表单:
艺术家=艺术家(名称=创建表单.名称.数据)
艺术家保存()
db.session.add(艺术家)

db.session.commit()#这么多的可能性。。。1) 当您单击“提交”时,浏览器是否确实发出请求?2) 服务器正在接收请求吗?3) 这是不是验证了它应该的方式?4) 它通过验证了吗?5) 它是否正在尝试更新数据库,但失败了?首先,我要检查#1,如果这不是问题,请在服务器代码中添加日志记录以查看它在做什么。与您的问题无关,但
user.phoneno=form.phoneno
可能应该是
user.phoneno=form.phoneno.data
(类似于上面的行)。
{% extends "admin-layout.html" %}

{% block content %}
<div>
    {% from "_formhelpers.html" import render_field %}
    <div class="container">
        <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-6">
                <div class="card shadow mb-4">
                    <div class="card-header py-3">
                        <h6 class="font-weight-bold text-primary">UpdateForm</h6>
                    </div>
                    <div class="card-body">
                        <div class="row">
                            <div class="col-sm-6 col-md-8">
                                <div>
                                    {{ form.hidden_tag()}}
                                    {{ render_field(form.fname, class="form-control")}}
                                    {{ render_field(form.lname, class="form-control")}}
                                    {{ render_field(form.email, class="form-control")}}
                                    {{ render_field(form.phoneno, class="form-control")}}
                                
                                    <a href="{{ url_for('user.profile')}}" class="btn btn-primary">Update form</a>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>




{% endblock content %}
from flask import render_template, flash, redirect, url_for
from flask_login import login_required

from app import db
from app.artists import bp
from app.artists.forms import ArtistForm
from app.main.forms import EmptyForm
from app.models import Artist

@bp.route('/', methods=['GET', 'POST'])
@login_required
def overview():
    create_form = ArtistForm()
    delete_form = EmptyForm()
    if create_form.validate_on_submit():
        artist = Artist(name=create_form.name.data)
        artist.save()
        db.session.add(artist)
        db.session.commit()  # <-- persist data in database
        flash(f'Created artist {create_form.name.data}.')

        return redirect(url_for('artists.overview'))

    return render_template('artists/overview.html', artists=Artist.query.all(), create_form=create_form, delete_form=delete_form)