如何将 html <span> 添加到 SubmitField 文本参数?
How to add a html <span> to the SubmitField text argument?
我正在尝试在提交按钮文本中包含一个信封符号。
基本上我要生成的代码是
<button type="button" class="btn btn-primary"><span class="glyphicon glyphicon-envelope"></span> Envelope</button>
但是我当然做不到
submit = SubmitField('<span class="glyphicon glyphicon-envelope"></span> Send')
执行此操作的最佳方法是什么?我正在尝试一些 javascript 代码,但我认为这不是最好的主意。
谢谢,
根据我对 wtforms 代码的阅读,通用 SubmitField 呈现一个 HTML 元素,如下所示:
<input type="submit" value="SOME TEXT LABEL">
之所以这样做是因为SubmitField
有签名(可以追溯继承看到HTML生成代码):
class SubmitField(BooleanField):
"""
Represents an ``<input type="submit">``. This allows checking if a given
submit button has been pressed.
"""
widget = widgets.SubmitInput()
要根据需要输出 HTML,您需要定义自定义小部件。查阅相关文档。
例如这样的东西(未经测试)可能有效:
class MySubmitWidget(widgets.SubmitInput): # note subclassing the original
def __call__(self, field, **kwargs): # but overriding the render
return HTMLString('<button type="button" class="btn btn-primary"><span class="glyphicon glyphicon-envelope"></span> Envelope</button>')
class MySubmitField(SubmitField): # note subclassing the original
widget = MySubmitWidget # but overriding the render widget
而在您的表单中,您只需使用 MySubmitField
即可。如果您想进一步自定义或使 HTML 动态,您必须修改 __call__()
方法以生成 HTML 以响应 kwargs
。
请注意,但是 <input type="submit">
元素有一个特定的默认操作,即提交表单,当您呈现通用 <button>
它不会自动提交您的表单,因此您很可能必须接下来解决这个问题。
试试这个 -
在表单定义中,为提交字段提及此内容。
submit = SubmitField('☉')
我正在尝试在提交按钮文本中包含一个信封符号。
基本上我要生成的代码是
<button type="button" class="btn btn-primary"><span class="glyphicon glyphicon-envelope"></span> Envelope</button>
但是我当然做不到
submit = SubmitField('<span class="glyphicon glyphicon-envelope"></span> Send')
执行此操作的最佳方法是什么?我正在尝试一些 javascript 代码,但我认为这不是最好的主意。
谢谢,
根据我对 wtforms 代码的阅读,通用 SubmitField 呈现一个 HTML 元素,如下所示:
<input type="submit" value="SOME TEXT LABEL">
之所以这样做是因为SubmitField
有签名(可以追溯继承看到HTML生成代码):
class SubmitField(BooleanField):
"""
Represents an ``<input type="submit">``. This allows checking if a given
submit button has been pressed.
"""
widget = widgets.SubmitInput()
要根据需要输出 HTML,您需要定义自定义小部件。查阅相关文档。
例如这样的东西(未经测试)可能有效:
class MySubmitWidget(widgets.SubmitInput): # note subclassing the original
def __call__(self, field, **kwargs): # but overriding the render
return HTMLString('<button type="button" class="btn btn-primary"><span class="glyphicon glyphicon-envelope"></span> Envelope</button>')
class MySubmitField(SubmitField): # note subclassing the original
widget = MySubmitWidget # but overriding the render widget
而在您的表单中,您只需使用 MySubmitField
即可。如果您想进一步自定义或使 HTML 动态,您必须修改 __call__()
方法以生成 HTML 以响应 kwargs
。
请注意,但是 <input type="submit">
元素有一个特定的默认操作,即提交表单,当您呈现通用 <button>
它不会自动提交您的表单,因此您很可能必须接下来解决这个问题。
试试这个 -
在表单定义中,为提交字段提及此内容。
submit = SubmitField('☉')