在 wtforms SubmitField 中使用图标?
Use icon in wtforms SubmitField?
我知道这看起来像是这个 的副本,其中答案给出了两个解决方案。但这些解决方案对我不起作用。我正在尝试重写此 html 以使用 wtforms 呈现。我有一个 < i > 标签,在按钮标签内有一个很棒的字体图标:
<button id="symbolBtn" class="mybtn btn btn-outline-secondary" type="submit"
name="submit-button" value="search">
<i class="fas fa-search"></i>
</button>
类似问题的第一个解决方案建议使用标记来定义要用作值的 html - 对于此解决方案,我尝试这样做:
from markupsafe import Markup
BuyForm(FlaskForm):
# The fields in question:
search = StringField("Search", id="symbolInput", validators=[validSymbol])
search_icon = Markup("<i class="fas fa-search"></i>")
search_button = SubmitField(search_icon, id="symbolBtn")
# Other fields in the same form
shares = IntegerField("Shares", id="amountInput", validators=[validBuyAmount])
shares_button = SubmitField("Refresh", id="amountBtn")
submit_button = SubmitField("Buy")
我有多个 SubmitFields(提交按钮)并根据按下的 SubmitField 进行不同的验证。但图标未呈现 - html 字符串在按钮中呈现为文本。我可以看到引号是个问题,我尝试了不同的组合:
Markup('<i class="fas fa-search"></i>')
Markup("<i class='fas fa-search'></i>")
Markup("<i class=\"fas fa-search\"></i>")
等等...但是每次尝试都只是呈现文本。就像 html inspect 上的来源在哪里,例如:
value="<i class='fas fa-search'></i>"
我想这是合乎逻辑的,那么人们是如何让它发挥作用的呢?
类似问题中的第二个解决方案建议将其写成普通 html,但我需要检查从自定义 wtforms 验证器中按下了哪个按钮,例如 validSymbol(form, field) 我为此需要能够说:
if form.search_button.data:
# Search button was pressed. Check if search field contains valid data.
我想做的是不可能的还是我只是错过了什么?
我不知道你是否想通了,标记也不适合我,但这就是我所做的。
在我的表单中,我制作了一个 class 和 submitfield
class FavoriteForm(FlaskForm):
favorite = SubmitField('Favorite')
在我的路线中我做到了
if fav.validate_on_submit:
if fav.data['favorite']: # If favorite comes back True
#code
return redirect(url_for('home'))
在我的 html 中我做到了
<form method="POST">
{{ fav.hidden_tag() }}
<button type="submit" name="favorite" value="x" class="follow-btn"><i class="fa fa-heart-o"> Favorite</i></button>
</form>
您的按钮必须有一个名称和一个值。
名称必须是您在表单中用于 SubmitField 的名称,值可以是您希望它不为空的任何名称。
我知道这看起来像是这个
<button id="symbolBtn" class="mybtn btn btn-outline-secondary" type="submit"
name="submit-button" value="search">
<i class="fas fa-search"></i>
</button>
类似问题的第一个解决方案建议使用标记来定义要用作值的 html - 对于此解决方案,我尝试这样做:
from markupsafe import Markup
BuyForm(FlaskForm):
# The fields in question:
search = StringField("Search", id="symbolInput", validators=[validSymbol])
search_icon = Markup("<i class="fas fa-search"></i>")
search_button = SubmitField(search_icon, id="symbolBtn")
# Other fields in the same form
shares = IntegerField("Shares", id="amountInput", validators=[validBuyAmount])
shares_button = SubmitField("Refresh", id="amountBtn")
submit_button = SubmitField("Buy")
我有多个 SubmitFields(提交按钮)并根据按下的 SubmitField 进行不同的验证。但图标未呈现 - html 字符串在按钮中呈现为文本。我可以看到引号是个问题,我尝试了不同的组合:
Markup('<i class="fas fa-search"></i>')
Markup("<i class='fas fa-search'></i>")
Markup("<i class=\"fas fa-search\"></i>")
等等...但是每次尝试都只是呈现文本。就像 html inspect 上的来源在哪里,例如:
value="<i class='fas fa-search'></i>"
我想这是合乎逻辑的,那么人们是如何让它发挥作用的呢?
类似问题中的第二个解决方案建议将其写成普通 html,但我需要检查从自定义 wtforms 验证器中按下了哪个按钮,例如 validSymbol(form, field) 我为此需要能够说:
if form.search_button.data:
# Search button was pressed. Check if search field contains valid data.
我想做的是不可能的还是我只是错过了什么?
我不知道你是否想通了,标记也不适合我,但这就是我所做的。
在我的表单中,我制作了一个 class 和 submitfield
class FavoriteForm(FlaskForm):
favorite = SubmitField('Favorite')
在我的路线中我做到了
if fav.validate_on_submit:
if fav.data['favorite']: # If favorite comes back True
#code
return redirect(url_for('home'))
在我的 html 中我做到了
<form method="POST">
{{ fav.hidden_tag() }}
<button type="submit" name="favorite" value="x" class="follow-btn"><i class="fa fa-heart-o"> Favorite</i></button>
</form>
您的按钮必须有一个名称和一个值。 名称必须是您在表单中用于 SubmitField 的名称,值可以是您希望它不为空的任何名称。