0
A
回答
1
def excel_file():
form = SQLFORM.factory(Field('start_date', 'date'),
Field('end_date', 'date'))
if form.process(session=None).accepted:
excel_file = create_excel_file(form.vars.start_date, form.vars.end_date)
return response.stream(excel_file, filename='name_of_file.xlsx',
attachment=True)
return dict(form=form)
注意,上面套session=None
在调用.process()
为了禁止使用_formkey
隐藏字段(否则,你就只能提交一次的形式将有手动重新加载页面以进行第二次提交)。这意味着没有CSRF保护,但这不应该成为一个问题,因为表单提交仅用于请求数据而不是进行任何更改。如果您需要CSRF保护,则必须手动实施。
另请注意,excel_file
可以是文件类对象(如StringIO),打开的文件对象或表示完整文件路径的字符串。
另外,在浏览器中,您可以通过Javascript添加一个事件处理程序来捕获按钮点击,而不是允许表单发布,请拨打window.open()
来创建和提供文件的web2py URL(您必须通过URL的查询字符串从表单中传递开始日期和结束日期的值)。提交后,您可以选择将表单字段填空。
相关问题
- 1. 将Servlet上下文参数传递给Spring MVC控制器
- 2. 将参数传递给用户控制
- 3. ASP.NET MVC - 传递参数给控制器
- 4. Angularjs:参数传递给控制器
- 5. 其他参数传递给控制器
- 6. 参数传递给控制器动作
- 7. 将控制值传递给控制器
- 8. Yii将参数传递给控件
- 9. 将控制器传递给angularjs组件
- 10. 将数组传递给MVC控制器
- 11. AngularModalService:将数据传递给控制器
- 12. ErrorException传递给控制器控制器参数2 :: __结构()
- 13. 从jQuery函数'$ .ajax'将参数传递给控制器函数
- 14. 从Textinput传递给控制器文件
- 15. 将参数从处理器传递给控制器; VST 3.5
- 16. 创建url查询参数并传递给Rails控制器
- 17. 传递自定义参数传递给控制器在MVC3
- 18. 如何将额外的参数传递给控制器至控制器的as_json
- 19. 从函数调用控制器并将其传递给URL编码参数
- 20. 如何使用FluidTypo3将参数传递给控制器操作?
- 21. Salesforce - 从输入字段将参数传递给控制器
- 22. 将ArrayList参数传递给控制器动作ASP.NET MVC
- 23. 如何使用angularjs将参数传递给控制器的url
- 24. 将字符串作为参数传递给控制器
- 25. 将参数传递给其他控制器或替代品
- 26. 如何将参数传递给express.js中的嵌套控制器?
- 27. 无法从HTML将参数传递给控制器
- 28. Shoulda - 将参数传递给控制器动作
- 29. Laravel将参数从路由传递给控制器
- 30. 将非模型参数传递给控制器动作