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

将CSS类添加到wtform中的字段

高墨一
2023-03-14
问题内容

我正在使用wtforms(和flask)生成动态表单。我想向正在生成的字段中添加一些自定义的CSS类,但是到目前为止,我一直无法这样做。使用在这里找到的答案,我尝试使用自定义小部件来添加此功能。它的实现方式与该问题的答案几乎完全相同:

class ClassedWidgetMixin(object):
  """Adds the field's name as a class.

  (when subclassed with any WTForms Field type).
  """

  def __init__(self, *args, **kwargs):
    print 'got to classed widget'
    super(ClassedWidgetMixin, self).__init__(*args, **kwargs)

  def __call__(self, field, **kwargs):
    print 'got to call'
    c = kwargs.pop('class', '') or kwargs.pop('class_', '')
    # kwargs['class'] = u'%s %s' % (field.name, c)
    kwargs['class'] = u'%s %s' % ('testclass', c)
    return super(ClassedWidgetMixin, self).__call__(field, **kwargs)


class ClassedTextField(TextField, ClassedWidgetMixin):
  print 'got to classed text field'

在View中,我这样做是为了创建字段(ClassedTextField是从表单导入的,而f是基本表单的实例):

  f.test_field = forms.ClassedTextField('Test Name')

表单的其余部分均已正确创建,但此jinja:

{{f.test_field}}

产生以下输出(无类):

<input id="test_field" name="test_field" type="text" value="">

任何提示都很好,谢谢。


问题答案:

实际上,您无需转到窗口小部件级别即可将HTML类属性附加到字段的呈现中。您可以使用class_jinja模板中的参数简单地指定它。

例如

    {{ form.email(class_="form-control") }}

将产生以下HTML ::

    <input class="form-control" id="email" name="email" type="text" value="">

要动态地执行此操作,例如,使用表单的名称作为HTML类属性的值,您可以执行以下操作:

Jinja:

    {{ form.email(class_="form-style-"+form.email.name) }}

输出:

    <input class="form-style-email" id="email" name="email" type="text" value="">


 类似资料:
  • 问题内容: 现在,我正在通过jquery加载iframe: 我有一个自定义样式表,希望将其应用于该页面。iframe中的页面不在同一域中,这就是为什么它很棘手的原因。我找到了允许您添加单个标签但不能添加整个样式表的解决方案。 编辑: 有问题的页面通过Mobile Safari 加载,因此跨域策略不适用。 问题答案: 基于解决方案您已经找到了如何将CSS应用于iframe?: 或更多jqueryis

  • 问题内容: 是否可以将CSS类添加到特定代码块? 假定以下文件: 我想给标记为“ cars”的块提供特定的CSS类,例如。有没有可能 或者?我知道黑客喜欢将整个块包装在另一个。我对直接解决方案感兴趣。 问题答案: 编辑:此功能是knitr v.1.16(05/18/17)中引入的,并且选项将其他HTML类应用于源和输出块请参阅[knitr文档。 要添加到源块: 启发这些选项的先前答案 您可以使用p

  • 问题内容: 我正在使用ejs在node.js(express)上工作,并且无法在其中包含.css文件。我分别尝试了与html- css二重奏相同的事情,并且效果很好…我如何在其中包含相同的内容我的.ejs文件。我的app.js因此: 和index.ejs文件: style.css文件: 问题答案: 您的问题实际上并非特定于ejs。 这里要注意的两件事 style.css 是一个外部css文件。因此

  • 问题内容: 我希望能够在javascript中说出这样的话: 如何将自己的距离函数添加到字符串类? 问题答案: 您可以扩展原型; …并像这样使用它;

  • 我的网站遇到了一些问题。我想添加CSS到我的按钮像这样的东西,我发现在网上。https://codepen.io/allthingssmitty/pen/wjzvjo我无法为它添加ID,因为我无法更改HTML代码,因为它是由WordPress自动生成的。如有任何帮助,我们将不胜感激。

  • 本文向大家介绍silverstripe 将字段添加到DataObject,包括了silverstripe 将字段添加到DataObject的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用该DataExtension机制将额外的数据库字段添加到现有的DataObject中: 并应用扩展名: 这将HairColour作为字段添加到Member对象。