Flask jinja2.exceptions.UndelineError:“str对象”没有属性“username”

Flask jinja2.exceptions.UndelineError:“str对象”没有属性“username”,flask,jinja2,flask-wtforms,Flask,Jinja2,Flask Wtforms,在尝试加载register.html页面时,我无法让我的flask应用程序识别我的表单变量。我尝试重新加载我的virtualenv,并尝试从另一个人那里加载模板代码,但我得到了相同的错误。这是我得到的回溯 File "s:\projects\gameapp\env\lib\site-packages\flask\app.py", line 2309, in __call__ return self.wsgi_app(environ, start_response) File "s:\projec

在尝试加载register.html页面时,我无法让我的flask应用程序识别我的表单变量。我尝试重新加载我的virtualenv,并尝试从另一个人那里加载模板代码,但我得到了相同的错误。这是我得到的回溯

File "s:\projects\gameapp\env\lib\site-packages\flask\app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "s:\projects\gameapp\env\lib\site-packages\flask\app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "s:\projects\gameapp\env\lib\site-packages\flask\app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "s:\projects\gameapp\env\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "s:\projects\gameapp\env\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "s:\projects\gameapp\env\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "s:\projects\gameapp\env\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "s:\projects\gameapp\env\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "s:\projects\gameapp\env\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "s:\projects\gameapp\env\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "S:\Projects\gameapp\gameapp.py", line 35, in register
return render_template('register.html', title='Register', form='form')
File "s:\projects\gameapp\env\lib\site-packages\flask\templating.py", line 135, in render_template
context, ctx.app)
File "s:\projects\gameapp\env\lib\site-packages\flask\templating.py", line 117, in _render
rv = template.render(context)
File "s:\projects\gameapp\env\lib\site-packages\jinja2\asyncsupport.py", line 76, in render
return original_render(self, *args, **kwargs)
File "s:\projects\gameapp\env\lib\site-packages\jinja2\environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "s:\projects\gameapp\env\lib\site-packages\jinja2\environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "s:\projects\gameapp\env\lib\site-packages\jinja2\_compat.py", line 37, in reraise
raise value.with_traceback(tb)
File "S:\Projects\gameapp\templates\register.html", line 1, in top-level template code
{% extends "layout.html" %}
File "S:\Projects\gameapp\templates\layout.html", line 44, in top-level template code
{% block content %}{% endblock %}
File "S:\Projects\gameapp\templates\register.html", line 9, in block "content"
{{ username.label(class="form-control-label") }}
File "s:\projects\gameapp\env\lib\site-packages\jinja2\environment.py", line 430, in getattr
return getattr(obj, attribute)
这是我的registration.html页面

{% extends "layout.html" %}
{% block content %}
    <div class="content-section">
        <form method="POST" action="">
            {{ form.hidden_tag }}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Join Today</legend>
                <div class="form-group">
                    {{ form.username.label(class="form-control-label") }}
                    {{ form.username(class="form-control form-control-lg") }}
                </div>
                <div class="form-group">
                    {{ form.email.label(class="form-control-label")}}
                    {{ form.email(class="form-control form-control-lg")}}
                </div>
                <div class="form-group">
                    {{ form.password.label(class="form-control-label") }}
                    {{ form.password(class="form-control form-control-lg") }}
                </div>
                <div class="form-group">
                    {{ form.confirm_password.label(class="form-control-label") }}
                    {{ form.confirm_password(class="form-control form-control-lg") }}
                </div>
            </fieldset>
            <div class="form-group">
                {{ form.submit(class="btn btn-outline-info") }}
            </div>
        </form>
    </div>
    <div class="border-top pt-3">
        <small class="text-muted">
            Already Have An Account? <a class="ml-2" href="{{ url_for('login') }}">Sign In</a>
        </small>
    </div>
{% endblock content %}

我已经尝试删除它抛出错误的代码,我只是在下一行得到一个错误,说没有属性“email”,我想这与版本错误有关,因为除了这个,目前一切正常。任何帮助都将不胜感激。

您需要使用class_uu属性来标记,而不是类,这意味着您需要修复

{{ form.username.label(class="form-control-label") }}


在整个模板中如此类推。

您需要使用class_uu属性来标记,而不是类,这意味着您需要修复

{{ form.username.label(class="form-control-label") }}


依此类推。

如user@所述,您应该在不同的类之间进行更改,但也可能您还没有实例化表单。请检查以下答案:。

如user@所述,您应该在不同的类之间进行更改,但也可能您尚未实例化表单。请检查以下答案:。

在解决错误之前,您需要先了解它

在这里,错误明确指出str对象没有属性username。这意味着使用名为username的属性的对象是str类型的,而它应该是form类的对象

如果您也发布了该表单的python代码,那就很容易了,但我还是让我们试着找出问题所在

假设表单类的名称为form,即其声明如下:

class Form(FlaskForm):
然后在呈现registration.html的python文件中,您必须执行以下操作

form = Form()
我最好的猜测是,你已经把你的类名加了引号

forms = 'Forms()'
正因为如此,python将其解释为str对象而不是Form对象

因此,只要从实例化语句中删除引用,就可以开始了


希望这有帮助:

在解决错误之前,您需要先了解它

在这里,错误明确指出str对象没有属性username。这意味着使用名为username的属性的对象是str类型的,而它应该是form类的对象

如果您也发布了该表单的python代码,那就很容易了,但我还是让我们试着找出问题所在

假设表单类的名称为form,即其声明如下:

class Form(FlaskForm):
然后在呈现registration.html的python文件中,您必须执行以下操作

form = Form()
我最好的猜测是,你已经把你的类名加了引号

forms = 'Forms()'
正因为如此,python将其解释为str对象而不是Form对象

因此,只要从实例化语句中删除引用,就可以开始了


希望能有所帮助:

嗨,安德利,回答得很好!如果OP公开了一些代码,那么给出一个例子总是有帮助的。请回答。嗨,安德利,回答得很好!如果OP公开了一些代码,那么给出一个例子总是有帮助的。结帐,然后回答。最终解决了问题。这是我在应用程序文件代码中的一对引号,我让form='form'和form=form最终解决了这个问题。这是我在应用程序文件代码中的一对引号,我有我的form='form'和form=form