gpt4 book ai didi

javascript - 使用按钮和 javascript 在 Flask 中设置 python 变量

转载 作者:行者123 更新时间:2023-12-02 22:39:33 24 4
gpt4 key购买 nike

我有一个简单的Flask应用程序包含一个名为 variable 的变量:

from flask import Flask, render_template

app = Flask(__name__)

variable = 100

@app.route('/', methods=['GET'])
@app.route('/index/', methods=['GET'])
def index():
return render_template('index.html', variable=variable)

def main():
app.run(debug=True, port=5000)

if __name__ == '__main__':
main()

index.html文件内容如下:

variable = {{ variable }}

<button onclick="setVariable(101);">
set variable to 101
</button>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<script>
function setVariable(variable) {
console.log(`variable = ${variable}`);
}
</script>

有没有办法将变量值设置在 setVariable 范围内函数? 即,variable 的值在本例中设置为 101。

基本上,最终目标是动态设置 variable 的值使用按钮,这应该进一步更新 variable = {{ variable }} index.html 中的行文件。

编辑

以下内容意味着您不能执行此操作,必须使用 ajax 请求或类似的内容。

https://stackoverflow.com/a/43383967/5058116

最佳答案

您可以使用Post/Redirect/Get

使用index.html中的表单将值发布到@app.route('/index/',methods=['GET', 'POST'])app.py

index.html中的表单

variable = {{ variable }}


<form action="{{ url_for('index') }}" method="post">
<input type="text" value="101" name="variable">
<input type="submit" value="set variable to 101">
</form>


{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li style="color:red">{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}

更改app.py来处理表单

from flask import Flask, render_template, request, redirect, url_for, flash

app = Flask(__name__)
app.secret_key = b'_1#y2l"F4Q8z\n\xec]/'

variable = 100


@app.route('/', methods=['GET', 'POST'])
@app.route('/index/', methods=['GET', 'POST'])
def index():
global variable
if request.method == "POST":
try:
variable = int(request.form.get("variable"))
return redirect(url_for('index'))
except:
flash("Invalid type for variable")
return redirect(url_for('index'))
return render_template('index.html', variable=variable)


if __name__ == '__main__':
app.run(debug=True, port=5000)

如果用户尝试发送数字以外的任何内容,则将 app.secret_key = b'_1#y2l"F4Q8z\n\xec]/' 添加到 flash 错误消息

关于javascript - 使用按钮和 javascript 在 Flask 中设置 python 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58628640/

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