Flask, MongoEngine, Wtforms - правильное отображение поля password и datetime

Поэтому я использую ***********, 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)

Теперь, когда я использую *********** model_form() (из flask.ext.***********.wtf), чтобы создать форму, а затем отобразить ее в шаблоне, DateTimeField и StringField() в атрибуте пароля кажутся визуализированными как простой ввод текста поля.

Как заставить их визуализировать как виджет календаря (например, Django) и поле пароля, которое фактически скрывает пароль без необходимости настраивать мою собственную форму?

2 ответа

Это немного устарело, но оно также высоко в Google при поиске этой проблемы.

Я выкопал в флягу-*********** lib (специально здесь) и нашел способ сделать это. Там есть возможность передать в "field_args" словарь, который поможет изменить способ создания полей из вашей модели.

У меня была такая же проблема, но с использованием model_form, как это работает:

form_cls = model_form(User, only=['username', 'password'], field_args={'password': {'password':True}})

Если вы копаете файл в этой ссылке, есть еще несколько полей, которые также можно изменить.


У меня был такой же вопрос, и единственный способ решить эту проблему - использовать wtforms:

from flask.ext.***********.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 validator в поле пароля.

licensed under cc by-sa 3.0 with attribution.