当前位置: 首页 > 面试题库 >

Wtforms,将类动态添加到表单

王庆
2023-03-14
问题内容

有没有办法可以从python发送表单的(css)类?例如:

class Company(Form):
    companyName = TextField('Company Name', [validators.Length(min=3, max = 60)])

这呈现了一个简单的文本字段,但是我希望该文本字段具有的CSS类.companyName,是否可以直接从python进行?

我知道我可以id="companyName"直接从python 放一个,但不能放一个类。

更新:我尝试了class_="companyName",但没有成功,我得到了:

__init__() got an unexpected keyword argument '_class'

问题答案:

WTForms不允许你在字段初始化中设置显示选项(例如类名)。但是,有几种方法可以解决此问题:

如果你所有的字段都应包含一个类名和一个ID,则在short_name呈现它时只需将每个字段的值传递给它即可:

<dl>
{% for field in form %}
<dt>{{field.label}}</dt>
<dd>{{field(class_=field.short_name)}}</dd>
{% endfor %}
</dl>

创建一个提供类名称的自定义窗口小部件混合:

from wtforms.fields import StringField
from wtforms.widgets import TextInput

class ClassedWidgetMixin(object):
    """Adds the field's name as a class 
    when subclassed with any WTForms Field type.

    Has not been tested - may not work."""
    def __init__(self, *args, **kwargs):
        super(ClassedWidgetMixin, self).__init__(*args, **kwargs)

    def __call__(self, field, **kwargs):
        c = kwargs.pop('class', '') or kwargs.pop('class_', '')
        kwargs['class'] = u'%s %s' % (field.short_name, c)
        return super(ClassedWidgetMixin, self).__call__(field, **kwargs)

# An example
class ClassedTextInput(ClassedWidgetMixin, TextInput):
    pass

class Company(Form):
    company_name = StringField('Company Name', widget=ClassedTextInput)


 类似资料:
  • 问题内容: 我的表格中有3个字段。我有一个提交按钮和一个“添加其他字段”按钮。我知道我可以使用表单类中的方法添加字段。 我是Python和Django的新手,并且陷入了一个初学者的问题;我的问题是: 当我单击“添加其他字段”按钮时,添加其他字段的过程是什么? 是否需要再次呈现表单? 我如何以及何时打电话,甚至必须打电话? 如何将参数传递给? 问题答案: 你的表单必须基于从POST传递给它的一些变量

  • 我使用以下方法在easytable(easytable)中创建我的表头 然后,绘制表格: 表格标题绘制正确,但。。动态添加行的方法是什么?我必须画一张新桌子吗?我可以向已经创建的表中添加行吗? 谢谢

  • 问题内容: 我不太确定如何处理此问题。我希望我能到达那里。 例如,我在一个页面上有一张充满地址的表。这些计数是动态的(可以是5或10或任何其他计数)。我希望可以在一页上进行编辑。 我的方法是创建wtforms一个表单编辑一个地址,并乘以它在Jinja2的和附加到HTML propertys并在 从itereation,这样我就可以提取人工数据的每一行,并把它放回我的形式,当我想评估一下。 因此,此

  • 我读过许多关于动态添加字段集的博客和帖子,但它们都给出了非常复杂的答案。我要求的不是那么复杂。 我的HTML代码: 因此,用户将在字段中输入一个整数值(我正在使用javascript检查验证)。点击链接,会出现相应数量的输入字段供他输入。我想用javascript实现这一点。 我不是javascript方面的专家。我在想如何通过链接检索用户在字段中填写的整数,并显示相应数量的输入字段。

  • 问题内容: 我有一个使用插件体系结构的Java Web应用程序。我想知道是否有人可以通过Web应用程序运行时通过Serlvet映射到servletconfig来添加servlet的解决方案?这样的想法是,可以将一个类添加到/ WEB-INF / classes文件夹中,并使其成为Servlet,而无需重新启动Web应用程序。同样,如果用户选择删除“插件”,则让代码从servletconfig中删除

  • 我从消防队拿到了我的文件。目前我在列表中有以下内容: 然后,在下面的方法中,我转换这个列表以放入一个具有所需格式的地图。