网站首页 > 技术文章 正文
一、从mvc谈起
搞过mvc开发的童鞋一般知道,搞web开发一般基本也就是那些个套路,大的条线而言,那么就是从页面获取参数,获取参数后,然后进行逻辑处理,在处理的过程中也就是包含持久化的过程,那么处理完成后,那么再将处理后的结果反馈给用户。那么这里就涉及到了好几种技术,比如ORM,模块以及页面渲染等。从抽象层面而言,第一步就是in,处理就是handle,那么反馈就是out。那么今天我们简要介绍的就是flask中read的机制,就是如果从用户的提交信息中心获取数据。
二、参数的传递
传递参数的语法是:/<参数名>/。然后在视图函数中,也要定义同名的参数。例如:
@app.route('/index/<string:test>/')
如上面的形式,在请求处理方法的路由配置中,如果对于参数的类型没有显式指定的话,那么默认为string型,否则在显式指定了int以及float类型时,当提交的参数不满足预置的参数数据类型指定,系统将激发not found错误。除了string、int和float,系统还支持path、uuid类型。尤其是如需要考虑做SEO优化,则推荐使用path类型进行参数传递。
三、get和post
大家知道,用户通过web提交数据最通常的有两种方式,一种是get,而另一种就是post,在flask中,针对两种不同的提交方式,采取了不同的获取手段:
- get
对于get方式提交的数据,flask中使用如下方式获取其中的传递参数:
request.args.get("key") 或者 request.args["key"]
- post
对于post方式提交的数据,flask中则采用如下的方式获取其中的传递参数:
request.form.get("key") 或者 request.form["key "]
- 综合应用
四、文件上传
获取上传的文件很简单,采取如下的方式获取:
f = request.files['files']
- 综合运用
@app.route('/uploads', methods=['GET', 'POST']) def uploads(): if request.method == "POST": fe = request.files['files'] # basepath = os.path.dirname(os.path.abspath(__file__)) basepath = os.path.abspath(os.path.dirname(__file__)) upload_path = os.path.join(basepath, 'static', 'upload') # f.filename可以拿到文件名,但是是客户端定义的名,不要相信这个名称,用secure_filename包装一下 fe.save(upload_path+'/'+secure_filename(fe.filename)) # 这里的url_for 和jinja的前端用法不一样,可以忽略.的引用 # url_for重定向 return redirect(url_for('uploads')) return render_template('upload.html')
以上就是flask中最基本的参数传递和获取的相关技术,除了这些基本的技术之外,系统还可以获取json类参数,具体大家可以参照下rquest的说明,应该是非常简单的。
五、一点思考
用多了spring mvc以及jfinal,在flask中,能不能将页面表单直接封装到一个对象中么?各位看官谁知道?可以交流一下!
猜你喜欢
- 2024-10-15 Python Flask Web表单(flask form表单)
- 2024-10-15 如何在Flask应用程序中使用JSON Web Tokens进行安全认证
- 2024-10-15 综合指南:将 Flask 与 MongoDB 结合使用
- 2024-10-15 python-flask搭建平台,HTML+CSS+JS写前端的web全栈-动画轮播
- 2024-10-15 Flask 表单处理(flask formdata)
- 2024-10-15 三、flask博客项目实战-之表单(flask 表单)
- 2024-10-15 flask python web开发的简单易学框架
- 2024-10-15 Flask-APScheduler使用教程(flask apscheduler)
- 2024-10-15 flask 项目中使用 bootstrapFileInput(进阶篇)
- 2024-10-15 基于flask框架展示数据可视化的一次尝试
- 最近发表
-
- 如何在 Linux 上安装 Java_怎么在linux中安装jdk
- Linux中tar命令打包路径相关问题_linux怎么用tar打包一个目录
- 常用linux系统常用扫描命令汇总_常用linux系统常用扫描命令汇总表
- VM下linux虚拟机新建过程(有图)_linux虚拟机创建新用户命令
- 系统小技巧:迁移通过Wubi方式安装的Ubuntu系统
- 文件系统(八):Linux JFFS2文件系统工作原理、优势与局限
- 如何利用ftrace精确跟踪特定进程调度信息
- prometheus网络监控之fping-exporter
- hyper linux的实操步骤,hyper-v批量管理工具的使用指南
- 2021年,运维工程师笔试真题(二)(附带答案)
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)