我试图显示安全瓶应该在登录失败或注册不当或其他情况时产生的错误,但实际上我的项目中甚至没有生成错误。
我使用的自定义表单助手显示模板如下所示(my_render_field):
{{ field(class="w3-input hidden-print w3-white", **kwargs)|safe }}
{% for error in field.errors %}
<div class="w3-panel w3-red w3-display-container">
<span onclick="this.parentElement.style.display='none'"class="w3-button w3-red w3-large w3-display-topright">×</span>
<h3>Error!</h3>
<p> {{ error }}</p>
</div>
{% endfor %}
除了由flask-security生成的字段之外,我有这个东西可以工作。我有一个自定义登录表单,如下所示:
<form action="{{ url_for_security('login') }}" method="POST" name="login_form">
{{ login_form.hidden_tag() }}
{{ my_render_field(login_form.email, placeholder='Email') }}
{{ my_render_field(login_form.password, placeholder='Password') }}
<div>
<input type="checkbox" class="w3-check" value="Remember"><label>{{ gettext('Remember Me') }}</label></input>
</div>
<input type="submit" class="w3-button w3-blue" value="Submit">
</form>
登录表单的定义如下:
from flask_security import LoginForm
@security.login_context_processor
def security_login_processor():
""" Simple function to inject flask-security's LoginForm into my login_form
This function also generates the localised title """
return dict(login_form=LoginForm(), title=gettext('Sign In'))
但是,在确保SECURITY_FLASH_MESSAGES明确设置为true后,我尝试包含这样的闪烁消息:
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
<p> {{ category }} - {{ message }}</p>
{% endfor %}
{% endif %}
{% endwith %}
我从来没有得到任何输出。
修改
现在看来LoginForm()中的字段没有验证器?当我在视图中使用login_user_form时,它按预期工作,但这意味着我无法使用修改后的表单。