Python Flask 应用中 NameForm 对象为何没有 'validate_on_submite' 属性?

新手上路,请多包涵

python小白,今天按课本上的实例写了如下代码,运行后一直报错:AttributeError: 'NameForm' object has no attribute 'validate_on_submite'
,上网查之后说是可能导入了两个Form,导致后面的Form覆盖前面导入的Form,我仔细地核对了一遍,并没有发现这个问题,已经校对了一下午,仍不能运行,通过自查也不能解决,现向各位大佬求助。另外,我的VScode不能识别validate_on_submite,也不知道什么原因,截图如下:

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
from flask import Flask, render_template, session, redirect,url_for
# from collections.abc import Sequence
# import _collections_abc
# from typing import Any, Mapping




app=Flask(__name__)
app.config["SECRET_KEY"] = "123456"

class NameForm(FlaskForm):
    name = StringField('What is your name?', validators=[DataRequired()])
    submit = SubmitField('Submit')


@app.route("/",methods=["GET", "POST"])
def index():
    name=None
    form = NameForm()
    if form.validate_on_submite(): 
        name = form.name.data
        form.name.data = ''
    return render_template('index1.html', form=form, name=name)
    #     old_name=session.get("name")
    #     if old_name is not None and old_name !=form.name.date: 
    #         flash("看看你输入的什么")
    #     session["name"] = form_name_data
    #     return redirect(url_for("index"))
    # return render_template("index1.html",form = form, name = session.get("name"))


if __name__=="__main__":
    app.run(debug=True)

求助各位大佬

阅读 687
avatarAI BotBETA

validate_on_submite 是一个拼写错误。正确的方法名称应该是 validate_on_submit。在你的 Flask 视图函数 index 中,你应该调用 form.validate_on_submit() 而不是 form.validate_on_submite()

请按照以下步骤更正你的代码:

  1. 找到你的视图函数 index
  2. 修正 validate_on_submitevalidate_on_submit

更正后的代码段应该如下所示:

@app.route("/", methods=["GET", "POST"])
def index():
    name = None
    form = NameForm()
    if form.validate_on_submit():  # 正确的方法名
        name = form.name.data
        form.name.data = ''
    return render_template('index1.html', form=form, name=name)

保存你的文件并重新运行 Flask 应用,错误应该会消失。此外,VS Code 无法识别 validate_on_submite 是因为它不是一个有效的方法名,VS Code 的智能提示和错误检查是基于你的代码和已安装的库中的方法/属性进行的。当你使用正确的方法名时,VS Code 应该可以正常识别它。

记得,在编程时,拼写和大小写都是非常重要的,因为 Python 是大小写敏感的。在调用方法或访问属性时,确保你使用正确的名称和正确的大小写。

1 个回答

方法名称拼写错误,form.validate_on_submit(), 另外如果vscode不识别的话可以加上类型注解form: NameForm = NameForm()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏