在我的FLask应用程序中,我使用Cookie设置语言
因此,我能够调用路由并呈现一个模板,将languagecookie的值传递给模板,并在HTML模板中使用条件jinja IF语句呈现它
我还使用WTForms在模板中构建和呈现表单(例如联系人表单)
@app.route('/contact', methods=['GET'])
def contact():
languageCookie = request.cookies.get('language')
form = ContactForm()
return render_template('contact.html', language=languageCookie, ContactForm = form)
class ContactForm(FlaskForm):
Name = StringField('Naam',
validators=[InputRequired(message="Een naam is verplicht"),
Length(min=2, max=25, message="Minimum 2 en maximum 25 characters")],
render_kw={'class':'form-control g-color-black g-bg-white g-bg-white--focus g-brd-gray-light-v4 g-brd-primary--focus rounded-3 g-py-13 g-px-15','placeholder':'Naam'})
我的问题是,是否有可能根据语言cookie的值更改此WTForm类中的内容
例如,在验证程序中更改字段的消息值等
已尝试,但未成功,因为cookie在路由外没有引用。 让WTForms类具有语言意识的更好方法是什么
非常感谢
下面是我测试过的一个解决方案:
创建实际的表单类并在一个函数中实例化该类,每次用户查看
/contact
时都会调用该函数。不过我不建议这样做,因为你必须为每个字段创建一个字典,这可能会变得很乏味如果您希望将相同的消息显示给用户,但翻译成他们的语言,我将使用flask babel为您处理翻译。这是一个多一点的工作开始,但会使你的生活更容易在未来。这是一个tutorial
您可以通过更改get_locale函数来合并cookie系统
相关问题 更多 >
编程相关推荐