如何利用烧瓶的自助切换

时间:2017-12-23 00:29:21

标签: python twitter-bootstrap checkbox flask

这个问题是this关于使用Bootstrap toggle with flask的问题的延伸。

我的切换代码如下:

    @app.route('/menu', methods=['POST', 'GET'])
def get_callback():
    if request.method == 'POST':
        button = request.form['toggle']
        print(button)
    return render_template('dashboard.html')

我的页面端点如下:

{{1}}

但是我无法从我的按钮得到任何回复。

此时我很失落。我试图复制上面问题的格式,但我仍然无法打印按钮甚至使用POST方法。

以下是我的问题:

  1. 如何从我的按钮获得回复?
  2. 如何保存方向,以便当用户重新登录按钮时,他们之前是如何离开的?
  3. (如果这很重要,我正在使用SQLAlchemy。)

    非常感谢任何帮助!

    谢谢,

    约拿

3 个答案:

答案 0 :(得分:1)

action中定义的表单目标似乎不正确。我将尝试将其更改为以下内容:

<form action="{{url_for('get_callback')}}" method="POST">

关于保存切换状态,您可能想要在db表中创建一列,默认情况下为off(或on),然后编写一些代码以在更改开关状态时更新已保存的开关状态值。拨动开关。

如果其他人有一个更好的主意来存储开关的状态,我很想知道如何做。

答案 1 :(得分:0)

首先,您不需要第二个隐藏的输入。导致有两个切换值,这不是您想要的。

<input name="toggle" onclick="this.form.submit()" data-off="&lt;i class='fa fa-times'&gt;&lt;/i&gt; " data-on="&lt;i class='fa fa-check'&gt;&lt;/i&gt; " data-onstyle='success' data-size='large' data-style='ios' data-toggle='toggle' id='activate-toggle' type='checkbox' value="on">
<input name="toggle" type="hidden" value="off">

但更重要的是,编写的代码会将的值打印到控制台,然后将HTML表单输入返回给用户。也许这样可以清除一切:

@app.route('/menu', methods=['POST', 'GET'])
def get_callback():
    if flask.request.method == 'POST':
        button = bool(flask.request.form.get('toggle', False))
        return "Toggle value: %r" % (button,)
    else:
        return render_template('dashboard.html')

如果执行此操作,并删除该不应该存在的隐藏输入,它将显示用户“ Toggle value:True”或“ Toggle value:False”,具体取决于哪个点击。

尽管在您的示例中我看不到用户如何在不切换复选框的情况下提交表单。

答案 2 :(得分:-1)

我会这样尝试

@app.route('/menu', methods=['GET','POST'])
def get_callback():
    if request.method == 'POST':
        print(request.form.get('toggle'))

return render_template('dashboard.html')

如果它不能与('toggle')一起使用,请尝试('checkbox')