首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StringField中的WTForms如何在WTForms文件中创建字段

StringField中的WTForms如何在WTForms文件中创建字段
EN

Stack Overflow用户
提问于 2020-01-24 19:47:19
回答 1查看 347关注 0票数 0

我是一个编码初学者,目前正在学习Python。我最近一直在使用烧瓶和WTForms创建一个注册表格。除了遵循教程来构建表单之外,我还试图稍微理解它,看看它是如何工作的(只是一般情况下)。所以我的问题是关于StringField的。

我已经创建了一个名为registr.html的html文件,它将被呈现。在这个html文件中,有两行代码将创建一个字段,供用户输入他们的用户名,请参见下面:

{ form.username.label }

{{ form.username }

在我的Python应用程序中,我创建了下面的内容,比如A部分:

代码语言:javascript
复制
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired

class RegistrationForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])

下面是B节:

代码语言:javascript
复制
@app.route("/register", methods=['GET', 'POST'])
def register():
    form = RegistrationForm()
return render_template('register.html', title='Register', form=form)

这是我的问题。我知道form.username.label会把“用户名”标签放在输入字段的上方,这样人们就会知道这是他们输入用户名的地方。然后我认为form.username所做的实际上是创建一个字段,这样人们就可以在其中输入一些东西。因此,我的理解是用户名是一个等于StringField(' username ',validators=DataRequired())的属性,它是StringField类的对象,并且由于表单等于RegistrationForm(),所以在html文件中执行form.username就像执行Registration.StringField('Username',validators=DataRequired())一样。我说对了吗?如果是这样的话,执行对象StringField('Username',validators=DataRequired())如何能够在html中创建一个输入字段?我们能执行一个对象吗?我认为我们只能在类中执行一个方法,对吗?所以肯定还有别的事情我不明白。再说一遍,我仍然是一个初学者,学习Python。因此,任何帮助都是非常感谢的!

EN

Stack Overflow用户

回答已采纳

发布于 2020-02-01 08:17:38

有一个默认的呈现小部件。如果需要呈现自定义HTML (https://wtforms.readthedocs.io/en/stable/widgets.html),则可以覆盖小部件。使用的呈现小部件的具体内容如下:

代码语言:javascript
复制
class Input(object):
    """
    Render a basic ``<input>`` field.
    This is used as the basis for most of the other input fields.
    By default, the `_value()` method will be called upon the associated field
    to provide the ``value=`` HTML attribute.
    """

    html_params = staticmethod(html_params)

    def __init__(self, input_type=None):
        if input_type is not None:
            self.input_type = input_type

    def __call__(self, field, **kwargs):
        kwargs.setdefault("id", field.id)
        kwargs.setdefault("type", self.input_type)
        if "value" not in kwargs:
            kwargs["value"] = field._value()
        if "required" not in kwargs and "required" in getattr(field, "flags", []):
            kwargs["required"] = True
        return Markup("<input %s>" % self.html_params(name=field.name, **kwargs))
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59902826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档