1
ryd994 2016-06-16 21:43:18 +08:00 via Android
注释掉之后有没有调整缩进?
|
2
cloverstd 2016-06-16 21:44:34 +08:00 1
if request.form.get('delete') == 'delete':
|
3
seoguess OP @ryd994 注释掉后是可以正常编辑的,编辑完成后会重定向到 show_all 页面。如果没有注释掉,那么进入编辑页面之后,修改内容之后,点击提交就会返回 400 错误。但是如果勾选删除的单选框,就可以删除内容,然后跳转到 show_all 页面。
就是二选一的情况,让我很纠结。 |
5
seoguess OP @cloverstd 谢谢!为啥用了.get 方法就可以了?我记得是通用的呀,只是使用.get 方法在不存在该字段的时候不会报错....
|
6
cloverstd 2016-06-16 22:53:30 +08:00
@seoguess 你的 delete 是 checkbox ,当不选中时,是不会提交到服务器的,你可以打开 Chrome 的 dev-tool 抓包一下看
本来 request.form['delete'] 应该抛出 KeyError 的异常的,我想可能是 Flask 或者 werkzeug 把异常吞了,然后抛出 400 的 HTTP 错误来 |
7
neo1218 2016-06-17 01:18:00 +08:00
如果 debug 开了,应该是会显示 KEYError 的
|
8
skydiver 2016-06-17 02:40:31 +08:00 via iPad
这不应该第一反应去看错误日志么……
而且奇怪这种时候为什么会返回 400 ,按理说 500 才对 |
9
binux 2016-06-17 03:13:53 +08:00 1
@skydiver flask 对于使用 __getitem__ 访问的 request.form 认为是必要参数。如果客户端没有传递必要参数,当然是 400 了。
|
10
garytqq 2016-06-17 07:52:57 +08:00
form 表单里没有 name='delete'的表单项吧,<input type='hidden' name='delete' value='delete' />
|
11
9hills 2016-06-17 08:04:39 +08:00
非强制参数要用 dict get
|
14
rockivy 2016-06-17 10:32:59 +08:00
建议看看 flask-appbuilder ( https://github.com/dpgaspar/Flask-AppBuilder )
建好 model 之后,只需要简单几行 View 配置代码, 就可以直接生成 CRUD 页面及功能,简直是 demo 和各种 mini 项目开发的神器。 |