所以我使用MongoEngine,Flask和WTForms来组合一个简单的webapp,我有一个如下所示的用户模型:
class User(db.document):
username = db.StringField(max_length=64)
password = db.StringField(max_length=64)
date_joined = db.DateTimeField(default=datetime.datetime.now)
现在,当我使用MongoEngine的model_form()(来自于flask.ext.mongoengine.wtf)来创建表单然后在模板中呈现它时,密码属性上的DateTimeField和StringField()似乎都呈现为简单的文本输入字段。
如何让它们作为日历小部件呈现(如Django所做)和密码字段,实际上隐藏密码而无需自定义编写我自己的表单?
答案 0 :(得分:1)
这有点旧,但在寻找这个问题时谷歌也很高兴。
我已经挖到了烧瓶-MongoEngine lib(特别是here),并找到了一种方法。可以通过" field_args"一个字典,可以帮助修改从模型中生成字段的方式。
我遇到了完全相同的问题,但使用像这样的model_form有效:
form_cls = model_form(User, only=['username', 'password'], field_args={'password': {'password':True}})
如果您深入了解该链接中的文件,还有一些其他字段也可以更改。
答案 1 :(得分:0)
我有同样的问题,我发现解决这个问题的唯一方法是使用wtforms:
from flask.ext.mongoengine.wtf import model_form
from wtforms import PasswordField
class User(db.document):
username = db.StringField(max_length=64)
password = db.StringField(max_length=64)
date_joined = db.DateTimeField(default=datetime.datetime.now)
user = model_form(User)
user.password = PasswordField('Password')
您可能还想在密码字段中添加 DataRequired 验证程序。