错误:“TypeError:hidden_​​tag() 缺少 1 个必需的位置参数:'self'” 在 Flask、python 中

2024-01-24

我一直在创建一个基于论坛的学习系统,类似于评估项目的堆栈溢出。我对 Flask 相当陌生,但我相信我对 Python 有很好的了解。我一直在关注Flask 教程并使其适应我的项目。每当我尝试访问名为“adduser”的页面(带有用于添加用户的表单的网页)时,我都会收到错误:

"TypeError: hidden_tag() missing 1 required positional argument: 'self'".

我不知道这意味着什么,也不知道如何尝试修复它。 我假设我可能会在“adduser”页面的 HTML 中找到修复程序,然后删除'{{ form.hidden_tag() }}'标签,我得到了一个不同的错误,这让我相信该错误与'forms.py'文件和'addUser.html' file.

forms.py

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, BooleanField
from wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationError
from itroom.models import User

class LoginForm(FlaskForm):
    email = StringField('Email',validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    remember = BooleanField('Remember Me')
    submit = SubmitField('Login')

class AddUserForm(FlaskForm):
    email = StringField('Email',validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    submit = SubmitField('Add User')

    def validate_email(self,email):
        user = User.query.filter_by(userEmail=email.data).first()
        if user:
            raise ValidationError('Email already exists in database.')

添加用户.html

{% extends "template.html" %}
{% block content %}

  <div class="center2" style="border-color: white;">
  <h2 align="center" style="padding: 2.5%;"></h2>
    <h1>Add a User</h1>   
      <form method="POST" action="">
         {{ form.hidden_tag() }}
        <div class="form-group">
          {{form.email.label}}
          {% if form.email.errors %}
          {{form.email(size=30, class="form-control is-invalid")}}
        <div class="invalid-feedback">
          {% for error in form.email.errors %}
          <span>{{ error }}</span>
          {% endfor %}
        </div>
          {% else %}
          {{form.email(size=30, class="form-control")}}
          {% endif %}
        </div>
          {{form.password.label}} <br>
          {{form.password(size=30)}}

          {{form.submit(class="btn btn-outline-info")}} <br>

      </form>
      </div>
{% endblock content %}

我还认为路线文件也可能有帮助。

路线.py

from flask import Flask, render_template, url_for, flash, redirect
from itroom import app, db, bcrypt
from itroom.forms import LoginForm, AddUserForm
from itroom.models import User, Post
from flask_login import login_user

@app.route("/")
@app.route("/home")     #defines the HTML loaded for /home
def home():
    return render_template('home.html', title='Home')


@app.route("/login", methods=['GET', 'POST'])       #defines the HTML loaded for /login
def login():
    form = LoginForm('')
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.userEmail.data).first()
        if user and bcrypt.check_password_hash(user.userPassword, form.password):
            login_user(user, remember=form.remember.data)
            return redirect(url_for('home'))
        else:
            flash('Login Unsucessful, Please check email and password') 
    return render_template('login.html',form=form, title='Login')

@app.route("/adduser", methods=['GET', 'POST'])       #defines the HTML loaded for /adduser
def addUser():
    form = AddUserForm('/login')
    if form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(form.password.data).decode ('utf-8')
        user = User(userEmail=form.email.data, userPassword = hashed_password)
        db.session.add(user)
        db.session.commit()
        temptext = ("Account created for '", form.email.data, "'." )
        flash(temptext)

    else:
        flash('Account not created')
    return render_template('addUser.html', title='Admin', form=AddUserForm)

预先感谢任何试图提供帮助的人!


TypeError 表示 self 未传递给hidden_​​tag 方法。如果您意外执行以下操作,则可能会出现此错误:

class A:
    def test(self):
        print('test')

A.test() # TypeError: test() missing 1 required positional argument: 'self'
A().test() # prints test

所以这意味着您正在使用类对象调用该方法。

在您的路由中,您有以下规则,将类传递到页面,但您可能希望返回实际的表单对象。所以你必须改变

return render_template('addUser.html', title='Admin', form=AddUserForm)

to

form = AddUserForm('/login')
...
return render_template('addUser.html', title='Admin', form=form)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:“TypeError:hidden_​​tag() 缺少 1 个必需的位置参数:'self'” 在 Flask、python 中 的相关文章

随机推荐

  • 在 ng-view 上滚动时,无尽滚动在 AngularJS 中不起作用

    我正在使用类似的代码this http jsfiddle net vojtajina U7Bz9 在 AngularJS 中创建无限滚动效果 我尝试通过移动可滚动容器的内容 在本例中为ul 到一个单独的 html 文件 然后使用 ng vi
  • ios:显示可变长度、多行文本的最佳方式

    我计划从文本文件加载多段落内容并将其显示在用户界面上 我将从几个文本文件之一加载 并且不会提前知道文本的长度 我的第一个想法是在 UIScrollView 中使用 UILabel 然而 似乎 UILabel 不能根据它包含的行数进行扩展 它
  • 如何在d3.js的Pack Layout中插入饼图?

    大家好 我想在我的包布局中添加饼图 而不是简单的圆圈 假设这是我的饼图数据和饼图布局 var data 2 3 4 5 var 弧 d3 svg arc outerRadius 50 innerRadius 0 var 饼 d3 layou
  • 就数据挖掘和可视化工具支持而言,日志事件的最佳 XML 格式是什么?

    我们希望能够从 Java 应用程序创建日志文件 该文件适合稍后通过工具进行处理 以帮助调查错误并收集性能统计数据 目前 我们使用传统的 日志内容 可能会或可能不会被展平为文本形式并附加到日志文件中 但这最适合人类读取的少量信息 经过仔细考虑
  • c strcmp 源代码

    int strcmp const char s1 const char s2 int ret 0 while ret unsigned char s1 unsigned char s2 s2 s1 s2 if ret lt 0 ret 1
  • 如何避免 ReactJS 中的 jQuery 调用

    我知道 JQuery 是 ReactJS 中的一种代码味道 因为它遍历整个 DOM 来完成它的工作 但是 我发现有些地方很难不使用它 这是一个例子 如果可能的话 我想找到一种更好的方法 我只是想根据字段是否填充来显示或隐藏 div 上的消息
  • redux 中有 OOP 的地方吗?

    我已经使用面向对象编程实践 25 年了 并在过去 5 年里尝试转向函数式编程 但当我尝试做一些复杂的事情时 我的想法总是倾向于 OOP 尤其是现在 ES6 支持像样的OOP 语法 这是我构建东西的自然方式 我现在正在学习 Redux 并且我
  • 来电显示检测:不适用于某些手机

    当有人打电话时 我使用以下方法来检测来电显示 在表单加载时我设置以下代码 this serialPort1 PortName COM3 this serialPort1 BaudRate 9600 this serialPort1 Data
  • mysql UPDATE 比 INSERT INTO 快吗?

    这更多的是一个理论问题 如果我运行 50 000 个插入新行的查询和 50 000 个更新这些行的查询 哪一个将花费更少的时间 插入会更快 因为使用更新 您需要首先搜索要更新的记录 然后执行更新 尽管这似乎不是一个有效的比较 因为您永远无法
  • 在 R parallel::mcparallel 中,是否可以限制任一时间使用的核心数量?

    在 R 中 mcparallel 函数在parallel每次调用包时 它都会将新任务分叉给工作人员 例如 如果我的机器有 N 个 物理 核心 并且我分叉了 2N 个任务 那么每个核心都会开始运行两个任务 这是不可取的 我宁愿能够开始在 N
  • 在 React Native 中创建自定义底部选项卡导航器

    大家好 我想在 React Native 中创建时尚且自定义的底部选项卡导航 任何人都可以知道如何创建上面提到的内容 const customTabBarStyle activeTintColor 0091EA inactiveTintCo
  • 如何构建 libjpeg 9b 的 DLL 版本?

    我想构建 libjpeg 9b 的 DLL 版本 根据文件here https msdn microsoft com en us library ms235636 aspx 看来我们需要添加一个预处理器 declspec dllexport
  • IE9 的foreignObject 的替代品

    我真的很喜欢foreignObject通过svg显示HTML区域 但今天我发现它在IE9中不起作用 为什么我不惊讶 好的 所以我正在寻找一个适用于 IE9 的替代方案 但这似乎很困难 使用foreignObject 来显示多个HTML 元素
  • WordPress插件翻译问题

    我用 poedit 翻译了我的插件 它在本地主机上运行良好 在新的 WordPress 安装上 但是当我将插件上传到服务器上的现有站点上时 一些俄语字符丢失了 相反 我得到的是拉丁文 我用 utf8 编码了 poedite 文件 在标头中我
  • 无法使用 IOptionsMonitor 检测 ASP.NET Core 中的更改

    我正在开发 Asp Net Core 应用程序 我想在运行应用程序后更改配置设置 我正在使用 IOptionsMonitor 但它没有检测到更改 在 Startup cs gt Configuration 方法中我有 services Co
  • 如何在haskell中输入整数? (在控制台输入)

    如何在控制台中输入整数 将其存储在变量中 然后将其作为我创建的函数的参数传递 到目前为止 为了使其有效 我必须执行以下操作 在最后一行中 您可以看到我如何应用该函数 我想要做的是通过控制台请求变量作为整数应用于函数 然后打印结果 mayor
  • tableView: cellForRowAtIndexPath: 不仅为可见单元格调用?

    我有一个带有部分的 tableView 可以打开和关闭 因此 当我点击一个部分将其打开时 它会被单元格填满并且 UITableViewCell tableView UITableView tableView cellForRowAtInde
  • 显示:无不适用于选项

    Demo here http jsfiddle net Wener WC9yy HTML display none b not works b the hidden can b not select b br
  • Grunt 错误:找不到模块“time-grunt”

    我尝试安装 time grunt 本地和全局 清除 npm 缓存 更新 npm 但没有任何帮助 我得到 Loading Gruntfile js tasks ERROR Error Cannot find module time grunt
  • 错误:“TypeError:hidden_​​tag() 缺少 1 个必需的位置参数:'self'” 在 Flask、python 中

    我一直在创建一个基于论坛的学习系统 类似于评估项目的堆栈溢出 我对 Flask 相当陌生 但我相信我对 Python 有很好的了解 我一直在关注Flask 教程并使其适应我的项目 每当我尝试访问名为 adduser 的页面 带有用于添加用户