【问题标题】:How to set form element name?如何设置表单元素名称?
【发布时间】:2016-03-22 21:28:57
【问题描述】:

我有一个用 Flask 编写的 Web 应用程序,它使用 WTForms、SQLAlchemy 和相应的 Flask 扩展、Flask-SQLAlchemy、Flask-WTF 和 WTForms-Alchemy。

对于以下型号:

class User(db.Model, UserMixin):
    """
    Represents a registered user.

    @TODO Override setter for password so it is always encrypted.
    @TODO Add last_login column
    """

    __tablename__ = 'User'

    def __init__(self, username=None, password=None, email=None):
        self.username = username
        self.email = email
        self.password = encrypt(password)

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False, default=u'Anonymous Lifter')
    username = db.Column(db.String, nullable=False)
    password = db.Column(db.String, nullable=False)

我尝试通过以下方式创建表单:

class LoginForm(ModelForm):
    """ Form used to login a user that does not use social login. """
    class Meta:
        model = User
        only = [u'username', u'password']
        field_args = {u'password': {'widget': PasswordInput()}}
    remember_me = BooleanField(u'Remember me')

我的问题是,当我在页面上显示表单时,usernamepassword 都显示为小写。如何将他们的标签(?)/名称(?)设置为大写?

【问题讨论】:

    标签: python flask flask-sqlalchemy wtforms flask-wtforms


    【解决方案1】:

    在模型中定义列时使用 info 属性。例如:

    class User(db.Model, UserMixin):
        """
        Represents a registered user.
    
        @TODO Override setter for password so it is always encrypted.
        @TODO Add last_login column
        """
    
        __tablename__ = 'User'
    
        def __init__(self, username=None, password=None, email=None):
            self.username = username
            self.email = email
            self.password = encrypt(password)
    
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String, nullable=False, default=u'Anonymous Lifter', info={'label': 'Name'})
        username = db.Column(db.String, nullable=False, info={'label': 'Username'})
        password = db.Column(db.String, nullable=False, info={'label': 'Password'})
    

    或者在定义表单时使用 field_args:

    class LoginForm(ModelForm):
        """ Form used to login a user that does not use social login. """
        class Meta:
            model = User
            only = [u'username', u'password']
            field_args = {
                u'password': {
                'widget': PasswordInput(),
                'label': 'PASSWORD'
                },
                u'username': {'label': 'USERNAME'},
            }
        remember_me = BooleanField(u'Remember me')
    

    【讨论】:

    • 我想在表单上这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    相关资源
    最近更新 更多