我正在学习使用烧瓶。我无法使WTForms内置翻译工作
http://wtforms.readthedocs.org/en/latest/i18n.html#using-the-built-in-translations-provider
这是我的Form类
class MyBaseForm(Form):
class Meta:
locales = ['es_ES', 'es']
class LoginAdminForm(MyBaseForm):
user = StringField('user', validators=[validators.InputRequired()])
password = StringField('password', validators=[validators.InputRequired()])
这是路由
app = Flask(__name__)
app.config.from_object('config')
@app.route('/admin', methods=['GET', 'POST'])
def adminLogin():
form = LoginAdminForm()
if form.validate_on_submit():
return redirect('/index') #TODO: Redirect to actual admin menu
return render_template("adminLogin.html", title="Admin login",form=form)
这是配置
WTF_CSRF_ENABLED = True
SECRET_KEY = 'you-will-never-guess'
这是adminLogin.html
{% extends "base.html" %}
{% block content %}
<form action="" method="post" name="login">
{{ form.hidden_tag() }}
<p>
Usuario:
{{ form.user }}
{% for error in form.password.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}<br>
Ingrese Contraseña:
{{ form.password }}
{% for error in form.password.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}<br>
</p>
<p><input type="submit" value="Acceder"></p>
{% endblock %}
base.html只是一个空的html骨架 错误总是以英语出现。我也试过在构造函数中传递参数不起作用
form = LoginAdminForm(meta={'locales': ['en_US', 'en']})
编辑:经过一段时间的游戏后,我放弃了烧瓶-WTForm并使用了纯粹的WTForms。然后它奏效了。我猜这是一个关于flask-WTForm的bug。如果我没有得到答案,我会选择纯粹的WTForms
答案 0 :(得分:0)
我正在使用的方法有效,但只有WTForm NOT with flask-WTForm。我假设这是一个错误。我找不到任何关于它的文档。 我现在将使用纯WTForm,因为它似乎解决了这个问题。