【发布时间】:2022-01-10 19:49:36
【问题描述】:
我试图在没有提交的情况下获取 Flask 中复选框的值。
这是我的 app.py:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.form.get('c_check')=="0":
print('success: 0')
checked=''
elif request.form.get('c_check')=="1":
print('success: 1')
checked='checked'
return render_template('index.html')
这是我用来切换复选框的 JavaScript:
function hello() {
if (document.querySelector('input').value=='0') {
document.querySelector('input').value='1'
console.log('value 1');
}
else {
document.querySelector('input').value='0'
console.log('value 0');
}
}
这是我的 index.html:
<form method="post" action="">
<div class="form-check form-switch">
<input class="form-check-input btn-lg"
name="c_check"
value="0"
type="checkbox"
role="switch"
id="flexSwitchCheckChecked"
onclick="hello()"
>
<label class="form-check-label btn-lg"
for="flexSwitchCheckChecked"></label>
<input type="submit">
</div>
</form>
<script src="{{url_for('static', filename= 'js/hello.js')}}"></script>
我想要
- 移除提交按钮
- 当我点击复选框时,Python 应该会收到复选框值,0 或 1。
当前代码仅在我单击提交按钮时返回 1。解决方案应该是我完全移除提交按钮,让 Python 监听值的变化并实时打印出来。
我对socketio解决方案持开放态度,但我不知道该怎么做。
【问题讨论】:
-
Flask 是一个服务器端 Web 框架,它只能在您向它发出请求时返回内容,并且如果没有您自己的自定义 JavaScript 代码,它不会动态更新页面。您可以创建一个不返回 HTML 且仅返回 200 状态代码的自定义路由,并在复选框上的
onclick事件处理程序上使用fetch。如果没有像这种情况那样来回发送和的数据,那么 Websocket 就没有意义了。
标签: javascript python html flask