gpt4 book ai didi

python - Flask - 带有动态标签的切换按钮

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:17 26 4
gpt4 key购买 nike

我是 Flask 的新手,想在我的网站上创建一个开/关切换按钮。我想知道这是否以及如何可能还包括动态标签。下图显示了我的想法:

我正在考虑使用 wtfforms SubmitField 但我不太清楚如何在我的 routes.py 文件和我的 html 模板之间实现这种动态行为。我在想这样的事情:

表单.py:

from flask_wtf import FlaskForm
from wtforms import SubmitField

class PowerSwitchForm(FlaskForm):
power_switch = SubmitField("ON")

路线.py:

from flask import render_template, flash, redirect, url_for
from app import app
from app.forms import PowerSwitchForm

@app.route('/power', methods=['GET', 'POST'])
def power():
power_switch = PowerSwitchForm()
if power_switch.power_switch.label.text == "ON" and power_switch.validate():
flash("Power has been turned ON")
power_switch.power_switch.label.text = "OFF"
return redirect(url_for('power')
elif power_switch.power_switch.label.text == "OFF" and power_switch.validate():
flash("Power has been turned OFF")
power_switch.power_switch.label.text = "ON"
return redirect(url_for('power')
return render_template('power.html', form0=power_switch)

power.html:

<!DOCTYPE html>

{% extends "base.html" %}

{% block content %}
<h2>Power switch</h2>
<form action="" method="post" novalidate>
{{ form0.hidden_tag() }}
{{ form0.power_switch() }}
</form>
{% endblock %}

最佳答案

您可以使用 jquery 来处理单击切换按钮时所需的操作。此外,如果在切换按钮时应执行后端处理,则可以使用 ajax。这个答案证明了两者。 bootstrap-toggle是一个可以简单实现切换的库。要使用,请复制下面的 header 标记值:

显示“已切换”或“未切换”的简单切换:

<html>
<body>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script>
<link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet">
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
</head>
<input type="checkbox" class='toggle' checked data-toggle="toggle">
<div class='status'>Toggled</div>
</body>
<script>
$(document).ready(function() {
$('.toggle').click(function() {
var current_status = $('.status').text();
if (current_status === 'Untoggled'){
$('.status').html('Toggled');
}
else{
$('.status').html('Untoggled');
}

});
});
</script>
</html>

enter image description here

为“已切换”或“未切换”触发后端脚本的切换:

在模板中,稍微更改脚本:

<script>
$(document).ready(function() {
$('.toggle').click(function() {
var current_status = $('.status').text();
$.ajax({
url: "/get_toggled_status",
type: "get",
data: {status: current_status},
success: function(response) {
$(".status").html(response);
},
error: function(xhr) {
//Do Something to handle error
}
});
});
});
</script>

然后,在您的应用中,创建一个路由 /get_toggled_status:

@app.route('/get_toggled_status') 
def toggled_status():
current_status = flask.request.args.get('status')
return 'Toggled' if current_status == 'Untoggled' else 'Untoggled'

此示例与纯 html/jquery 解决方案执行相同的操作,但是,它确实演示了在使用切换时如何与后端进行通信。

关于python - Flask - 带有动态标签的切换按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51057966/

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