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

2017-08-13 17:49:24 +08:00
 whutgeek

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    #问题就是需要在这里区分两个按钮谁被按下了

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

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


@Kilerd 人家都会表单的还来问你?
whutgeek
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
2017-08-13 18:04:05 +08:00
@SeanChense 所以说这是百度都能找到的问题。
拒绝伸手党,从我做起。
spongebobsun
2017-08-13 18:05:21 +08:00
请求的时候给不同的参数,或者请求不同的 url 都可以解决
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
2017-08-14 01:51:20 +08:00
把 button 改成 input,input:submit 会提交按下的按钮上写的名称(要顺便定义 name 和 value ),这样是不用 Javascript 的解决方案。
用 JS 的话就随便玩啦。讲真这个技巧应该能搜到。
lovesky
2017-08-14 14:42:15 +08:00
@Kilerd 拒绝伸手党,从我做起。+1
tennc
2017-08-16 22:40:06 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/382632

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX