怎么利用 flask 后端框架检测前台按钮被按下? - 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

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

  •  
  •   whutgeek Aug 13, 2017 7024 views
    This topic created in 3194 days ago, the information mentioned may be changed or developed.

    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 replies    2017-08-16 22:40:06 +08:00
    Kilerd
        1
    Kilerd  
       Aug 13, 2017 via iPhone
    先去学学 flask 怎么处理 form 内容的,再来问问题
    learnshare
        2
    learnshare  
       Aug 13, 2017
    Ajax
    SeanChense
        3
    SeanChense  
       Aug 13, 2017
    1.给两个不同的 button 绑定不同的 url 链接
    2.button 带一个表单,表单里写自己的 id


    @Kilerd 人家都会表单的还来问你?
    whutgeek
        4
    whutgeek  
    OP
       Aug 13, 2017
    @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  
       Aug 13, 2017 via iPhone
    @SeanChense 所以说这是百度都能找到的问题。
    拒绝伸手党,从我做起。
    spongebobsun
        6
    spongebobsun  
       Aug 13, 2017
    请求的时候给不同的参数,或者请求不同的 url 都可以解决
    Lax
        7
    Lax  
       Aug 13, 2017
    前端代码需要把 form 拆开;如果不拆 form,可以把两个 button 对应不同的值,然后提交。button 好用之后可以 ajax。

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

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

    对不起我是隔壁 ruby 加过来砸场子的。
    建议先学基本的 html 再开始写代码。没有基础知识支持的写代码都是瞎写
    phy25
        8
    phy25  
       Aug 14, 2017 via Android
    把 button 改成 input,input:submit 会提交按下的按钮上写的名称(要顺便定义 name 和 value ),这样是不用 Javascript 的解决方案。
    用 JS 的话就随便玩啦。讲真这个技巧应该能搜到。
    lovesky
        9
    lovesky  
       Aug 14, 2017
    @Kilerd 拒绝伸手党,从我做起。+1
    tennc
        10
    tennc  
       Aug 16, 2017
    About     Help     Advertise     Blog     API     FAQ     Solana     1173 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 48ms UTC 23:10 PVG 07:10 LAX 16:10 JFK 19:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86