python代码,微型框架flask如何响应请求?如何获取参数?
发布于 作者:苏南大叔 来源:程序如此灵动~

python
也是可以用于httpserver
的,其中比较简单的方式就是flask
。如果对应到nodejs
上的话,对标的就是express
框架。那么,作为www容器的最基本功能,就是响应get
或者post
请求,并且获得参数,这也是本文中要讨论的问题。

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文描述python
的flask
微型框架。测试环境:win10
,python@3.6.8
,flask@2.0.3
。
安装flask
Flask
是一个用Python
编写的Web应用程序框架,Flask
基于Werkzeug WSGI
工具包和Jinja2
模板引擎。flask
英文翻译为一种长颈烧瓶,官方logo
看起来像个辣椒。
Flask也被称为“microframework” ,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
官方网站是:

安装方式是:
启动进程
使用flask
框架的时候,最应该注意的地方,就是不能把文件命名为flask.py
。这样的话,就会出现模块空间的引用错误。报错类似如下:
基本测试代码:

响应get
请求
测试代码:
访问方式:

响应post
请求
测试代码:
访问方式:
表格对比
post
和get
的区别:
method | 装饰器 | 获取参数方式 |
---|---|---|
GET | methods=['get'] | flask.request.args.get() |
POST | methods=['post'] | flask.request.form.get() |
获得header
的方式:
header | 语句 |
---|---|
UA | flask.request.headers.get("User-Agent") |
Cookie | flask.request.headers.get("Cookie") |
特殊例子
这个有个特殊的例子,就是表单里面的同名表单项的服务器端处理问题。表单项里面有重名的input
,比如两个checkbox
。flask
能否拿到数据呢?
这里有两个要点:
第一、具有重复项目的ImmutableMultiDict
转dict
。网上的教程都是说:
这个会丢失数据,真正的办法是:
第二、jsonify
输出中文,靠的是修改flask
的配置。
form.html
:

相关文档
因为本文的响应结果是json
,所以使用json.dumps()
输出了响应结果。涉及到中文文本输出的时候,需要设置特殊参数。具体可以参考文章:
如果想把这些flask
代码包装成docker
文件的话,可以参考下面的链接:
如果想看看nodejs
的express
框架,如何实现类似的需求的话,请点击:
综述
本文主要描述python
下的微型web框架flask
,主要聚焦于响应最简单的post
或者get
请求。更多高级的flask
经验文章,请点击下面的链接:


