V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
whutgeek
V2EX  ›  Python

怎么利用 flask 后端框架检测前台按钮被按下?

  •  
  •   whutgeek · 2017-08-13 17:49:24 +08:00 · 6459 次点击
    这是一个创建于 2646 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT,在前端页面( index.html )中创建两个按钮,点击 load 或者 save 按钮都需要 flask 后台框架来响应执行操作,点击两个按钮后不跳转页面(或者跳转后的页面仍然为 index.html ),也就是说两个按钮对应的 url 都是'/',那么问题来了,flask 后台框架怎么在 url 为'/'的方法中区分这两个按钮哪个被按下呢?

    index.html:

    <button class="btn btn-default btn-primary" name="load">Load</button>
    <button class="btn btn-default btn-info" name="save">Save</button>
    

    index.py:

    @app.route('/')
        def index():
            pass    #问题就是需要在这里区分两个按钮谁被按下了
    

    希望各位大大不啬赐教,在此先谢谢了!

    10 条回复    2017-08-16 22:40:06 +08:00
    Kilerd
        1
    Kilerd  
       2017-08-13 17:55:17 +08:00 via iPhone
    先去学学 flask 怎么处理 form 内容的,再来问问题
    learnshare
        2
    learnshare  
       2017-08-13 17:56:33 +08:00
    Ajax
    SeanChense
        3
    SeanChense  
       2017-08-13 17:57:55 +08:00
    1.给两个不同的 button 绑定不同的 url 链接
    2.button 带一个表单,表单里写自己的 id


    @Kilerd 人家都会表单的还来问你?
    whutgeek
        4
    whutgeek  
    OP
       2017-08-13 18:04:01 +08:00
    @learnshare 谢谢!前台通过 jquery 获取到被点击按钮的 name 属性,然后通过 ajax 传送到后端,然后再在 index 函数里面判断:
    ```
    <script>
    var data = {}

    data['button'] = value
    ...

    $.ajax({
    type: 'POST',
    url: /,
    data: data,
    dataType: 'json',
    success: function(data) {
    },
    error: function(xhr, type) {
    }
    });

    </script>
    ```
    这种思路确实可行,但是我这里的 data 数据不仅仅需要传递 button 的值,还需要传递我想保存的数据,也就是把我想保存的数据和不想保存的 button 的值都放在了同一个 data 键值对里面,感觉这种处理方式不怎么优雅,有没有更方便可行的方式呀?
    Kilerd
        5
    Kilerd  
       2017-08-13 18:04:05 +08:00 via iPhone
    @SeanChense 所以说这是百度都能找到的问题。
    拒绝伸手党,从我做起。
    spongebobsun
        6
    spongebobsun  
       2017-08-13 18:05:21 +08:00
    请求的时候给不同的参数,或者请求不同的 url 都可以解决
    Lax
        7
    Lax  
       2017-08-13 18:05:56 +08:00
    前端代码需要把 form 拆开;如果不拆 form,可以把两个 button 对应不同的值,然后提交。button 好用之后可以 ajax。

    后段代码,竟然 load 和 save 不做拆分,痛苦。

    ```
    button_to :action1, remote: true
    button_to :action2, remote: true
    ```

    对不起我是隔壁 ruby 加过来砸场子的。
    建议先学基本的 html 再开始写代码。没有基础知识支持的写代码都是瞎写
    phy25
        8
    phy25  
       2017-08-14 01:51:20 +08:00 via Android
    把 button 改成 input,input:submit 会提交按下的按钮上写的名称(要顺便定义 name 和 value ),这样是不用 Javascript 的解决方案。
    用 JS 的话就随便玩啦。讲真这个技巧应该能搜到。
    lovesky
        9
    lovesky  
       2017-08-14 14:42:15 +08:00
    @Kilerd 拒绝伸手党,从我做起。+1
    tennc
        10
    tennc  
       2017-08-16 22:40:06 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2600 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:43 · PVG 18:43 · LAX 02:43 · JFK 05:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.