我正在尝试在提交按钮文本中包含一个信封符号。
基本上我要生成的代码是
<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代码,但是我认为这不是最好的主意。
谢谢
答案 0 :(得分:2)
根据我对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__()
方法以生成响应kwargs
的HTML。
请注意,<input type="submit">
元素有一个特殊的默认操作是提交表单,当您呈现通用<button>
时,它不会自动提交表单,因此您很可能必须解决该问题接下来的问题。
答案 1 :(得分:1)
尝试一下-
在表单定义中,在“提交”字段中提及此内容。
提交= SubmitField('✉')