首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flask框架web开发:零基础入门

Flask框架是Python开发的一个基于Werkzeug和Jinja 2的web开发微框架,它的优势就是极其简洁,但又非常灵活,而且容易学习和应用。因此Flask框架是Python新手快速开始web开发最好的选择,此外,使用Flask框架的另一个好处在于你可以非常轻松地将基于Python的机器学习算法或数据分析算法集成到web应用中。

如果希望深入学习Flask Web开发,推荐这个教程:

深入浅出Flask :http://t.cn/EysICe6

1、可以用Flask框架做什么

从博客应用到克隆一个facebook或者twitter,理论上你可以用Flask做任何事情。有很多库可以直接使用,例如flask-sockets,flask-google-maps等,而且Flask框架支持MySQL、Postgresql、MongoDB等诸多数据库。

我能想到的一些可以用Flask框架实现的web应用类型:博客应用、聊天应用、仪表盘应用、RESTAPI、管理页面、邮件服务等。

安装Flask

使用pip安装Flask:

2、Hello,World

创建一个文件app.py,然后只需要几个简单的步骤,就可以写出Flask版本的Hello World

引入Flask类

创建Flask对象,我们将使用该对象进行应用的配置和运行:

name是Python中的特殊变量,如果文件作为主程序执行,那么变量的值就是

,如果是被其他模块引入,那么的值就是模块名称。

编写主程序

在主程序中,执行来启动应用:

改名启动一个本地服务器,默认情况下其地址是,在上面的代码中,我们使用关键字

参数将监听端口修改为8080。

路由

使用app变量的装饰器来告诉Flask框架URL如何触发我们的视图函数:

上面的标识,对路径’/'的请求,将转为对函数的调用。很直白,对吧?

运行

现在,让我们完整地看一下app.py的整个代码:

然后运行起来:

你应该会看到如下输入:

现在就可以打开浏览器访问了:

3、使用HTML模板

首先我们看看如何原始的HTML代码插入Flask应用:

在上面的代码中,我们使用拼接的HTML字符串来展示user字典的数据。现在访问:

拼接HTML字符串非常容易出错,因此Flask使用Jinja 2模板引擎来分离数据逻辑和展示层。

我们将模板文件按如下路径放置:

使用模板时,视图函数应当返回的调用结果。例如下面的代码片段渲染模板,并将渲染结果作为视图函数的返回值:

在上面的代码中,模板文件依赖于变量,其内容如下:

模板文件的语法扩充了HTML,因此可以使用变量和逻辑。

在浏览器中访问:

4、使用表单

每个web应用都需要使用表单来采集用户数据。现在让我们使用Flask框架创建一个简单的表单来收集用户的基本信息,例如名称、年龄、邮件、兴趣爱好等,我们将这个模板文件命名为

视图函数同时支持POST和GET请求。GET请求将渲染模板,而POST请求将重定向到:

下面是showbio的实现:

以及show_bio.html的内容:

5、数据库集成:使用SQLAlchemy

Flask不能直接连接数据库,需要借助于ORM(Object Relational Mapper)。

在这一部分,我们将借助于SQLAlchemy使用Postgres数据库。

安装Flask-SQLAlchemy和Postgres

首先安装flask-sqlalchemy:

然后从官方下载并安装postgres:https://postgresapp.com/

创建数据库

在终端中使用下面的命令创建一个appdb数据库:

更新应用配置

修改app.config,添加数据库相关的配置信息:

然后在代码中就可以使用这些配置数据了:

现在,让我们创建第一个模型(Model)。所有模型的基类是db.Model,使用Column来定义数据列:

在代码中使用模型:

6、模型-数据同步

使用ORM时,需要执行迁移操作以便在模型和持久化数据之间保持同步。我们使用

Flask-Migrate这个扩展来完成该任务。

首先安装:

然后在代码中引入:

进行必要的配置:

运行管理器:

完整的代码如下:

使用如下的命令初始化Alembic:

执行第一个迁移任务:

一旦上述命令执行完毕,我们的数据表就会创建成功。现在更新数据库:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181210G1HION00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券