![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Flask Web开发实战:入门、进阶与原理解析
本专栏由三部分组成,分别为基础篇、实战篇、进阶篇,共16章。本书章节经过精心设计,力求让读者可以循序渐进地掌握Flask开发的基础 知识和技巧。
Super-Coding
长风破浪会有时,直挂云帆济沧海
展开
-
5 数据库
5.1 数据库分类数据库一般有两种,一种是SQL 结构化查询语言,一种是NoSQL 非关系型数据库5.1.1 SQLSQL数据库指关系型数据库,常用的SQL DBMS主要包括SQL Server、Oracle、MySQL、PostgreSQL、SQLite等。关系型数据库使用表来定义数据对象,不同的表之间使用关系连接。数据库几个基本概念:表(table):存储数据的特定结构。模式(schema):定义表的结构信息。列/字段(column/field):表中的列,存储一系列特定的数据,列组成表原创 2020-06-29 14:59:54 · 246 阅读 · 0 评论 -
4 表单
4.1 HTML表单在HTML中,表单通过标签创建,表单中的字段使用标签定义。下面是一个非常简单的HTML表单:<form method="post"> <label for="username">Username</label><br> <input type="text" name="username" placeholder="Héctor Rivera"><br> <label for="password">原创 2020-06-28 11:00:33 · 564 阅读 · 0 评论 -
3 模板使用
在动态Web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成。当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的方式来在HTML代码中插入变量,这时我们需要使用模板引擎(template engine)。借助模板引擎,我们可以在HTML文件中使用特殊的语法来标记出变量,这类包含固定内容和动态部分的可重用文件称为模板(template)。3.1 模板基本用法3.1.1创建模板先创建虚拟数据:user = { 'username':原创 2020-06-24 10:32:19 · 306 阅读 · 0 评论 -
2 Flask与HTTP
2.1 请求响应循环以一个真实的URL为例:http://helloflask.com/hello当我们在浏览器中的地址栏中输入这个URL,然后按下Enter时,稍等片刻,浏览器会显示一个问候页面。这背后到底发生了什么?你一定可以猜想到,这背后也有一个类似我们第1章编写的程序运行着。它负责接收用户的请求,并把对应的内容返回给客户端,显示在用户的浏览器上。事实上,每一个Web应用都包含这种处理模式,即“请求-响应循环(Request-Response Cycle)”:客户端发出请求,服务器原创 2020-06-22 16:21:19 · 698 阅读 · 0 评论 -
1.10 Flask与MVC架构
你也许会困惑为什么用来处理请求并生成响应的函数被称为“视图函数(view function)”,其实这个命名并不合理。在Flask中,这个命名的约定来自Werkzeug,而Werkzeug中URL匹配的实现主要参考了Routes(一个URL匹配库),再往前追溯,Routes的实现又参考了Rubyon Rails(http://rubyonrails.org/)。在Ruby on Rails中,术语views用来表示MVC(Model-View-Controller,模型-视图-控制器)架构中的Vi原创 2020-06-22 14:16:25 · 3489 阅读 · 0 评论 -
1.9 模板与静态文件
一个完整的网站当然不能只返回用户一句“Hello,World!”,我们需要模板(template)和静态文件(static file)来生成更加丰富的网页。模板即包含程序页面的HTML文件,静态文件则是需要在HTML文件中加载的CSS和JavaScript文件,以及图片、字体文件等资源文件。默认情况下,模板文件存放在项目根目录中的templates文件夹中,静态文件存放在static文件夹下,这两个文件夹需要和包含程序实例的模块处于同一个目录下,对应的项目结构示例如下所示:hello/-原创 2020-06-22 14:13:09 · 686 阅读 · 0 评论 -
1.8 Flask命令
创建任意一个函数,并为其添加app.cli.command()装饰器,我们就可以注册一个flask命令。@app.cli.command()def hello(): click.echo('Hello, Human!')函数的名称即为命令名称,这里注册的命令即hello,你可以使用flask hello命令来触发函数。作为替代,你也可以在app.cli.command()装饰器中传入参数来设置命令名称,比如app.cli.command(‘say-hello’)会把命令名称设置为say-he原创 2020-06-22 14:09:33 · 300 阅读 · 0 评论 -
1.7 URL与端点
在Web程序中,URL无处不在。如果程序中的URL都是以硬编码的方式写出,那么将会大大降低代码的易用性。比如,当你修改了某个路由的URL规则,那么程序里对应的URL都要一个一个进行修改。更好的解决办法是使用Flask提供的url_for()函数获取URL,当路由中定义的URL规则被修改时,这个函数总会返回正确的URL。调用url_for()函数时,第一个参数为端点(endpoint)值。在Flask中,端点用来标记一个视图函数以及对应的URL规则。端点的默认值为视图函数的名称,至于为什么不直接使用视图原创 2020-06-22 13:10:13 · 510 阅读 · 0 评论 -
1.6 项目配置
在很多情况下,你需要设置程序的某些行为,这时你就需要使用配置变量。在Flask中,配置变量就是一些大写形式的Python变量,你也可以称之为配置参数或配置键。使用统一的配置变量可以避免在程序中以硬编码(hard coded)的形式设置程序。在一个项目中,你会用到许多配置:Flask提供的配置,扩展提供的配置,还有程序特定的配置。和平时使用变量不同,这些配置变量都通过Flask对象的app.config属性作为统一的接口来设置和获取,它指向的Config类实际上是字典的子类,所以你可以像操作其他字典一样操原创 2020-06-22 13:06:40 · 91 阅读 · 0 评论 -
1.5 扩展
扩展(extension)即使用 Flask提供的API接口编写的Python库,可以为Flask程序添加各种各样的功能。大部分Flask扩展用来集成其他库,作为Flask和其他库之间的薄薄一层胶水。因为Flask扩展的编写有一些约定,所以初始化的过程大致相似。大部分扩展都会提供一个扩展类,实例化这个类,并传入我们创建的程序实例app作为参数,即可完成初始化过程。通常,扩展会在传入的程序实例上注册一些处理函数,并加载一些配置。以某扩展实现了Foo功能为例,这个扩展的名称将是Flask-Foo或Foo-F原创 2020-06-22 13:02:46 · 135 阅读 · 0 评论 -
1.4 Python Shell
开发Flask程序时,想要进入交互式窗口,使用 flask shell命令:$ flask shell原创 2020-06-22 13:00:25 · 109 阅读 · 0 评论 -
1.3 启动开发服务器
1.3.1 Run Flask RunFlask通过依赖包Click内置了一个CLI(Command Line Interface,命令行交互界面)系统。当我们安装Flask后,会自动添加一个flask命令脚本,我们可以通过flask命令执行内置命令、扩展提供的命令或是我们自己定义的命令。其中,flask run命令用来启动内置的开发服务器:$ flask run确保执行命令前激活了虚拟环境(pipenv shell),否则需要使用pipenv run flask run命令启动开发服务器。原创 2020-06-20 14:00:47 · 310 阅读 · 0 评论 -
1.2 Hello Flask
Hello Flaskfrom flask import Flaskapp = Flask(__name__)@app.route('/')def index(): return '<h1>Hello Flask</h1>'最简单的flask程序1.2.1 创建程序实例先从flask包中导入Flask类,这个类表示一个Flask程序。实例化这个类,就得我们程序实例app:from flask import Flaskapp = Flask(__name__)原创 2020-06-19 17:58:14 · 128 阅读 · 0 评论 -
1.1搭建开发环境
1.安装pip和Pipenv安装pip:访问链接https://bootstrap.pypa.io/get-pip.py使用Python执行get-pip.py文件$ pip install <某个包的名称>使用pip安装pipenv:$ pip install pipenv在Linux或macOS系统中使用sudo以全局安装:$ sudo pip install pipenv2.创建虚拟环境虚拟环境通常使用Virtualenv来创建,但是为了更方便地管理虚拟 环境和原创 2020-06-19 17:20:19 · 245 阅读 · 0 评论