Can';t获取单个复选框以在Flask WTF中渲染

Can';t获取单个复选框以在Flask WTF中渲染,flask,flask-wtforms,Flask,Flask Wtforms,我已经搜索了很长一段时间,寻找如何在Flask WTF中使用复选框的示例,但似乎要么没有示例,要么有涉及复选框列表的非常复杂的示例 我确实在Miguel的博客中找到了一个示例,但我无法获得要渲染的复选框。以下是我所做的: 首先,表单类: class LoginForm(Form): email = TextField("Email address", validators=[validators.required()]) password = PasswordField("Pas

我已经搜索了很长一段时间,寻找如何在Flask WTF中使用复选框的示例,但似乎要么没有示例,要么有涉及复选框列表的非常复杂的示例

我确实在Miguel的博客中找到了一个示例,但我无法获得要渲染的复选框。以下是我所做的:

首先,表单类:

class LoginForm(Form):
    email = TextField("Email address", validators=[validators.required()])
    password = PasswordField("Password", validators=[validators.required()])
    remember_me = BooleanField("Remember me", default = False)
    submit = SubmitField("Login")
然后在我的模板中:

<form class="form-signin" role="form" action="{{ url_for('login') }}" method="post">
    {{ form.hidden_tag() }}
    <div class="form-group">
        {{ form.email.label }}
        {{ form.email ( ** {'class' : 'form-control'} ) }}
    </div>
    <div class="form-group">
        {{ form.password.label }}
        {{ form.password ( ** {'class' : 'form-control'} ) }}
    </div>
    <div class="form-group">
        {{ form.remember_me }} Remember me
    </div>               
</form>

{{form.hidden_tag()}}
{{form.email.label}
{{form.email(**{'class':'form control'}}}
{{form.password.label}
{{form.password(**{'class':'form control'}}}
{{记住我}记住我
在表单的最终输出中,缺少复选框:

如果我看到生成的HTML,则该字段将丢失:

<form class="form-signin" role="form" action="/login" method="post">
                <div style="display:none;"><input id="csrf_token" name="csrf_token" type="hidden" value="1457326344##3036eeab4ffa39494ee92247925a30a88a69432f"><input id="next" name="next" type="hidden" value=""></div>
            <div class="form-group">
                <label for="email">Email Address</label>
                <input class="form-control" id="email" name="email" type="text" value="">
            </div>
            <div class="form-group">
                <label for="password">Password</label>
                <input class="form-control" id="password" name="password" type="password" value="">
            </div>
            <div class="form-group">
                 Remember me             
            </div>
            <div class="form-group">
                <input class="btn btn-primary btn-lg" id="submit" name="submit" type="submit" value="Login">
            </div>          
            </form>

电子邮件地址
密码
记得我吗
奇怪的是,如果我尝试向模板添加
{{form.memory\u me.label}
,我会得到一个异常,即
jinja2.exceptions.UndefinedError:'flask\u security.forms.LoginForm object'没有属性“memory\u me”

我还遇到了一些提到自定义小部件的解决方案,但我真的希望听到我不必为了一个简单的复选框而走这条路

我做错了什么?如果没有,最短、最无痛的方法是什么

~~~~更新~~~~


看起来这里有一些奇怪的行为在起作用。字段
form.memory
似乎会生成一个复选框,
form.memory.label
会生成一个默认的“记住我”标签。使用任何其他名称都会导致上述异常发生。

我最终发现了我的错误。从安全导入*导入
导致flask安全模板
LoginForm
潜入我的命名空间,导致奇怪的行为。我还需要对表单进行一些更改,从
flask.ext.wtf
导入
表单
,但从
wtforms
导入其余字段。希望它能帮助别人

在我看来是正确的-只是检查一下,复选框是在HTML源代码中生成的,只是不可见?还是根本没有生成HTML复选框?@MattHealy我已经用这些信息更新了我的帖子。HTML根本不会生成。同样使用
表单。记住_me.label
抛出一个异常(在更新的帖子中也提到了)。这就是为什么你不应该使用
import*
@dirn是的,终于学会了,很难。我觉得更方便。现在我更清楚了。