gpt4 book ai didi

python - Flask 隐藏输入未在模板中设置

转载 作者:行者123 更新时间:2023-12-01 03:30:36 25 4
gpt4 key购买 nike

所以我尝试将 Jinja2 模板中的值传递回我的 Python 代码。我正在尝试使用隐藏输入来做到这一点。我的表单类是这样的:

class TrueOrFalseForm(flask_wtf.FlaskForm):
choice = RadioField(choices=[('True', 'TRUE'), ('False', 'FALSE')], validators=[validators.InputRequired()])
hidden = HiddenField()
submit = SubmitField('Submit')

我的表格是这样的:

<form autocomplete="off" action="" method="post">
{{ form.hidden_tag() }}
<div style="text-align: center">
<div style="display: inline-block">
{{ form.choice }}
{{ form.hidden(value="{{ result }}") }}
{{ form.submit(class_="btn btn-primary btn-lg") }}
</div>
</div>
</form>

result是我在渲染模板时传递的字符串。

检查 form.hidden.data 的值时不过,它返回为 '' 。该标签也呈现为 <input id="hidden" name="hidden" type="hidden" value=""> .

我也尝试过 value={{ result }}而不是value="{{result}}"但这会让 Jinja 抛出 TemplateSyntaxError。

知道如何做到这一点吗?

编辑:我正在覆盖result每次我调用该函数时。这是我的路线功能:

@app.route('/', methods=['GET', 'POST'])
def home():
form = forms.TrueOrFalseForm()
x = random.randint(-100, 100)
y = random.randint(-100, 100)
statement_str = generate_statement_string(2)
tree = BinTree.build_tree(statement_str)
statement_result = BinTree.solve_tree(tree, x, y) # result gets overwritten here
if form.validate_on_submit():
if not flask_login.current_user.is_anonymous:
# same as the else, except with some sql, not relevant
else:
if form.choice.data == form.hidden.data:
flask.flash('Correct!')
else:
flask.flash('Incorrect!')
return flask.render_template('home.html', x_value=str(x), y_value=str(y), statement=statement_str,
result=str(statement_result), form=form)

最佳答案

{{ form.hidden(value="{{ result }}") }} 已经在带有外部双大括号的模板语法中。因此,您应该能够简单地编写结果变量,如下所示: {{ form.hidden(value=result) }}

编辑

{{ form.hidden_​​tag() }} 替换为 {{ form.csrf_token() }} 以及执行我原始答案中的操作。
您可能还必须使用 form = forms.TrueOrFalseForm(request.form) 实例化表单。如果您不这样做,某些表单会表现得很奇怪。

关于python - Flask 隐藏输入未在模板中设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40983237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com