赵走x博客
网站访问量:151882
首页
书籍
软件
工具
古诗词
搜索
登录
Flask 实战:41、电子邮件进阶实践
Flask 实战:40、使用事务邮件服务SendGird
Flask 实战:39、使用Flask-Mail发送电子邮件
Flask 实战:38、数据库进阶实践
Flask 实战:37、更新数据库表
Flask 实战:36、定义关系
Flask 实战:35、在视图函数里操作数据库
Flask 实战:34、数据库操作:CRUD
Flask 实战:33、使用Flask-SQLAlchemy管理数据库
Flask 实战:32、ORM魔法
Flask 实战:31、数据库的分类
Flask 实战:30、单个页面多个表单
Flask 实战:29、单个表单多个提交按钮
Flask 实战:28、使用Flask-CKEditor集成富文本编辑器
Flask 实战:27、多文件上传
Flask 实战:26、文件上传
Flask 实战:25、自定义验证器
Flask 实战:24、使用宏渲染表单
Flask 实战:23、设置错误消息语言
Flask 实战:22、处理表单数据
Flask 实战:21、使用Flask-WTF处理表单
Flask 实战:20、HTML表单
Flask 实战:19、模板进阶实践
Flask 实战:18、模板结构组织
Flask 实战:17、模板辅助工具
Flask 实战:16、模板基本用法
Flask 实战:15、HTTP进阶实践
Flask 实战:14、Flask上下文
Flask 实战:13、HTTP响应
Flask 实战:12、HTTP请求
Flask 实战:11、请求响应循环
Flask 实战:10、Flask与MVC架构
Flask 实战:9、模板与静态文件
Flask 实战:8、Flask命令
Flask 实战:7、URL与端点
Flask 实战:6、项目配置
Flask 实战:5、Flask扩展
Flask 实战:4、Python Shell
Flask 实战:3、启动开发服务器
Flask 实战:2、Hello,Flask!
Flask 实战:1、初识Flask
Flask 实战:29、单个表单多个提交按钮
资源编号:75880
Python Web
Flask Web开发实战:入门、进阶与原理解析
热度:75
在某些情况下,我们可能需要为一个表单添加多个提交按钮。比如在创建文章的表单中添加发布新文章和保存草稿的按钮。当用户提交表单时,我们需要在视图函数中根据按下的按钮来做出不同的处理。下面代码清单创建了一个这样的表单,其中save表示保存草稿按钮,publish表示发布按钮,正文字段使用TextAreaField字段。
在某些情况下,我们可能需要为一个表单添加多个提交按钮。比如在创建文章的表单中添加发布新文章和保存草稿的按钮。当用户提交表单时,我们需要在视图函数中根据按下的按钮来做出不同的处理。下面代码清单创建了一个这样的表单,其中save表示保存草稿按钮,publish表示发布按钮,正文字段使用TextAreaField字段。 ``` class NewPostForm(FlaskForm): title = StringField('Title', validators=[DataRequired(), Length(1, 50)]) body = TextAreaField('Body', validators=[DataRequired()]) save = SubmitField('Save') # 保存按钮 publish = SubmitField('Publish') # 发布按钮 ``` 当表单数据通过POST请求提交时,Flask会把表单数据解析到request.form字典。如果表单中有两个提交字段,那么只有被单击的提交字段才会出现在这个字典中。当我们对表单类实例或特定的字段属性调用data属性时,WTForms会对数据做进一步处理。对于提交字段的值,它会将其转换为布尔值:被单击的提交字段的值将是True,未被单击的值则是False。 基于这个机制,我们可以通过提交按钮字段的值来判断当前被单击的按钮。 ``` @app.route('/two-submits', methods=['GET', 'POST']) def two_submits(): form = NewPostForm() if form.validate_on_submit(): if form.save.data: # 保存按钮被单击 # save it... flash('You click the "Save" button.') elif form.publish.data: # 发布按钮被单击 # publish it... flash('You click the "Publish" button.') return redirect(url_for('index')) return render_template('2submit.html', form=form) ``` 访问[http://localhost:5000/two-submits](http://localhost:5000/two-submits) ,当你单击某个按钮时,重定向后的页面的提示信息中会包含你单击的按钮名称。 >提示 有些时候,你还想在表单添加非提交按钮。比如,添加一个返回主页的取消按钮。因为这类按钮和表单处理过程无关,最简单的方式是直接在HTML模板中手动添加。