实验介绍

1. 实验内容

Flask是一个用Python编写的Web应用程序框架。Armin Ronacher带领一个名为Pocco的国际Python爱好者团队开发了Flask。Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目。学习Flask能够帮助我们快速使用Python构建Web服务

2. 实验要点

  • 掌握安装和配置Flask环境
  • 尝试编写Flask版"Hello World"

3.实验环境

  • Centos 7.9

4. 工作目录

本实验的工作目录为: /experiment

使用以下命令创建

mkdir /experiment

Flask介绍

1.什么是Flask?

Flask是一种基于Python的Web开发框架。

Flask包含了内置的开发服务器和调试工具。Flask与其他框架最大的不同是允许Web开发人员开发更加灵活,并可以轻松根据开发社区的变化更改自己的服务。


2.Flask能做什么?

我们可以使用基于Python语言的Flask框架来开发Web应用程序。它集成了很多第三方的服务和API使得开发程序功能更加丰富和完善。Flask的核心概念十分简单,而且很小。


安装Python

检查你的环境是否安装Python3,如果没有安装,到 Python官网下载安装合适当前系统的版本。

本文以Centos7.9安装Python3.6为例:

cd /experiment

安装python3 需要很多的依赖包,所以我们先安装依赖包,在Linux上直接敲击命令就可以。

yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install libffi-devel -y

下载python3 安装包

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar -xvJf Python-3.7.0.tar.xz

下载完,并解压完成后,开始编译安装

mkdir /usr/local/python3
cd Python-3.7.0
./configure --prefix=/usr/local/python3
make && make install

创建软件连接:就是一个指向,以后可以直接调用python3

ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

验证一下

[root@bogon experiment]# python3 -V
Python 3.7.0
[root@bogon experiment]# pip3 -V
pip 10.0.1 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)
[root@bogon experiment]#

建立Python虚拟环境

使用以下命令安装venv包(下载过程已完成,无需再次操作)

yum install -y python3.7-venv

使用下面的命令创建虚拟环境venv

python3 -m venv venv

在终端输入命令执行后,会在当前目录生成与虚拟环境同名的目录。


使用下面的命令激活刚刚创建的Python虚拟环境。

source venv/bin/activate

也可以使用deactivate退出使用虚拟环境。


安装wheel包以便安装其他内容(下载过程已完成,无需再次操作)。

[root@bogon experiment]# source venv/bin/activate
(venv) [root@bogon experiment]# pip3 install wheel
Collecting wheel
Downloading https://files.pythonhosted.org/packages/65/63/39d04c74222770ed1589c0eaba06c05891801219272420b40311cd60c880/wheel-0.36.2-py2.py3-none-any.whl
Installing collected packages: wheel
Successfully installed wheel-0.36.2
You are using pip version 10.0.1, however version 21.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(venv) [root@bogon experiment]#


下载并安装Flask

遵循以下步骤安装Flask

pip3 install flask

flask --help

Werkzeug

Werkzeug是WSGI工具箱。WSGI只是Web服务器将Web请求转发到以Python编程语言编写的Web应用程序的调用约定。

Jinja

模块化十Web程序开发人员的基础技能。Jinja是基于Python的功能齐全且流行的模板引擎。它是一种富有表现力的语言,为模板作者提供了一套强大的工具。

请按照以下步骤安装MongoDB。我们概述了将其安装在基于Debian的Linux中的步骤。如果使用的是其他操作系统,请访问链接并按照预期的操作系统进行安装。

安装MongoDB

创建一个 mongodb-org-3.6.repo 文件

vi /etc/yum.repos.d/mongodb-org-3.6.repo

在文件中加入如下内容:

[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

退出编辑模式,直接输入如下命令安装即可:

yum install -y mongodb-org

安装成功后,使用以下命令配置MongoDB

默认情况下MongoDb启动后会初始化以下两个目录:

  • 数据存储目录:/var/lib/mongo
  • 日志文件目录:/var/log/mongodb

我们在启动前可以先创建这两个目录并设置当前用户有读写权限:

mkdir -p /var/lib/mongodb
mkdir -p /var/log/mongodb
chown `whoami` /var/lib/mongodb # 设置权限
chown `whoami` /var/log/mongodb # 设置权限

接下来启动Mongodb服务

mongod --dbpath /var/lib/mongodb --logpath /var/log/mongodb/mongod.log --fork

之后输入mongo启动Mongodb。

Flask-"Hello World"

使用下面命令安装flask-appbuilder和mongoengline

pip3 install flask-appbuilder
pip3 install mongoengine
pip3 install flask-mongoengine

使用以下代码创建一个基础应用。

flask fab create-app

输入项目名称(exampleApp)和数据库引擎(MongoEngine),就能在当前目录下看到新生成的项目文件。

该目录的结果如下图所示:

要运行该程序需要进入exampleApp目录下输入以下命令:

flask run

要在flaskTutorialApp中创建第一个程序,请打开app目录下的views.py文件并添加以下代码。查找文件中给出的导入语句。如果还不存在,请添加这些语句。

from flask_appbuilder import BaseView, expose
from app import appbuilder class HelloWorld(BaseView):
route_base = "/hello" @expose("/")
def hello(self):
return "Hello, World!"
appbuilder.add_view_no_menu(HelloWorld())

保存后再次启动Flask服务器flask run,通过访问127.0.0.1:5000/hello观察结果

调试

之前,开发服务器未在调试模式下运行。如果没有调试模式,则很难在Flask应用程序的源代码中找到错误。

Flask中的调试模式会产生以下结果:

  1. 调试模式激活自动重新加载器。这意味着我们在更改应用程序的源代码后无需重启开发服务器。
  2. 调试模式将激活Python调试器。我们可以在异常期间检查变量的值。
  3. 调试模式启用Flask应用程序调试。我们可以在调试会话中检查各种变量的值。

如果开发服务器已经在运行,请停止它。您可以使用CTRL + C或键盘中断来执行相同的操作。

使用以下代码启用调试模式并临时运行开发服务器。

FLASK_ENV=development flask run

在控制台上查看调试器PIN,并记下它。

现在,使用以下代码片段行更改上面编写的HelloWorld视图。注意,我们引入了一个自定义异常。

@expose("/")
def hello(self):
raise Exception("A custom exception to learn DEBUG Mode")
return "Hello, World!"

导航到127.0.0.1:5000/hello/,您将看到该应用程序引发了异常。浏览器显示堆栈跟踪,如下所示。

现在,在浏览器中检查堆栈跟踪并转到最后一行。单击它以展开其视图,然后单击CLI图标以交互方式打开Shell。

打开它后,您将看到浏览器将显示提示调试PIN。输入调试PIN,然后单击“确定”。

输入调试PIN后继续进行操作后,便可以访问交互式外壳程序(最下方)。

我们从浏览器内部访问外壳程序,并且可以检查变量的值以查找导致异常的原因并以更好的方式处理错误。请查看下图所示的示例之一。

locals()
globals()
self

测试Flask程序

现在,让我们为正在开发的Flask应用程序编写第一个测试。首先,安装PyTest。PyTest是一个测试框架。它有助于我们编写更好的代码。

而且,仅仅因为我们可以在开发应用程序时编写单元测试,所以可以遵循TDD方法。TDD代表测试驱动开发。在本系列的后续教程中,我们将始终首先编写测试并开发我们的视图或模型。

安装PyTest(安装过程已完成,无需再次操作)

pip3 install pytest

现在,在应用程序目录中创建一个名为test_hello.py的文件。让我们编写第一个单元测试来测试我们的观点。

from app import appbuilder
import pytest @pytest.fixture
def client():
""" A pytest fixture for test client """
appbuilder.app.config["TESTING"] = True
with appbuilder.app.test_client() as client:
yield client def test_hello(client):
""" A test method to test view hello """
resp = client.get("/hello", follow_redirects=True)
assert 200 == resp.status_code

使用下面的pytest命令运行测试。PyTest自动收集测试并将结果显示在标准输出上,运行之前记得备注掉raise Exception("A custom exception to learn DEBUG Mode")(这句是调试的时候加的)。

pytest test_hello.py

实验总结

在本教程中,我们涵盖了从必备环境条件到为使用Flask(基于Python的Web开发框架)开发的Web应用程序设置CI / CD工作流的所有基本概念。

本教程涵盖了所有必要步骤,例如安装Python,下载和安装Flask,使用Flask-Appbuilder,使用PyTest进行测试等,以开始使用Python进行Web开发。

实验1、初入Flask的更多相关文章

  1. Scala初入

    何为Scala物 Scala为基于JVM虚拟机中的面向对象与函数式编程思想并且完全兼容Java的混合编程语言,可以是Scala与Java是同根同源的,既然Scala与JAVA都是基于JVM之上的编程语 ...

  2. 初学HTML5、初入前端

    学习HTML5是一个漫长的过程,当中会遇到很多技术与心态上的变化.刚开始学习,我们不能发力过猛,需要一个相对稳定的状态去面对.多关注一些自己感兴趣的网站和技术知识,建立自己的信心与好奇心,为以后的学习 ...

  3. 0x00linux32位汇编初入--前期准备

    0x00汇编初入--前期准备 一.汇编工具 在linux平台下常用的编译器为as,连接器为ld,使用的文本编辑器为vim,汇编语法为att 以下是一些工具: addr2line 把地址转换为文件名和行 ...

  4. 初入职场的建议--摘自GameRes

    又开始一年一度的校招了,最近跑了几个学校演讲,发现很多话用短短的一堂职业规划课讲还远远不够,因为那堂课仅仅可能帮大家多思考怎样找到一份合适的工作,并没有提醒大家怎样在工作中发展自己的职业. 见过这么多 ...

  5. 【Xbox one S】开箱&开机&初入坑心得

    再来一发水贴,先上产品标准照镇贴: 前言 身为一个资深单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿 ...

  6. 初窥Flask

    初窥Flask Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求 ...

  7. Git初入

    Git记录 使用git 也有一段时间了, git的入门级了解也就不再多说, 但平常使用中, 仍然会遇到很多问题, 在此记录一二. 在查资料的过程中, 发现了两个比较好的资料: 特别是第二个, 相当详细 ...

  8. SuperMap iClient for JavaScript初入

    SuperMap iClient for JavaScript初入 介绍SuperMap for Js的简单使用. 推荐先看下这篇文档:SuperMap iClient for JavaScript ...

  9. 初入前端框架bootstrap--Web前端

    Bootstraps是一种简洁.直观.强悍的前端开发框架,它让web开发更迅速.简单.对于初入Bootstrap的小白,高效进入主题很重要,能为我们节省很多时间,下面我将对使用Bootstrap开发前 ...

随机推荐

  1. 安装mysql警告: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

    CentOS安装rpm安装MySQL时爆出警告: warning: mysql-community-server-5.7.18-1.el6.x86_64.rpm: Header V3 DSA/SHA1 ...

  2. mysql-创建用户并授权,设置允许远程连接

    一.创建用户并授权 1.登录mysql mysql -u root -q 2.创建数据库 create database dbdata;//以创建dbdata为例 3.创建用户 创建user01,只能 ...

  3. IT培训软件测试怎么样,问问“过来人”!

    经常看到有人在网上发帖子问:"XX培训(IT培训机构)怎么样,学过的老哥可以出来讲讲真话吗?"问这种问题的同学,来,站起来!我不得不在这儿说你两句:你要想知道一家IT培训机构到底怎 ...

  4. Java线程的6种状态

    6种状态分别是: NEW.RUNNABLE.TERMINATED.WAITING.TIMED_WAITING.BLOCKED NEW:线程创建完毕 RUNNABLE:线程运行中,又分为READY + ...

  5. web自动化框架—BasePage 类的简单封装

    优秀的框架都有属于自己的思想,在搭建web自动化测试框架时,我们通常都遵循 PO(Page Object)思想. 简单理解就是我们会把每个页面看成一个对象,一切皆对象,面向对象编码,这样会让我们更好的 ...

  6. python介绍,计算机核心基础,与运行程序有关的三大核心硬件,操作系统

    python介绍,计算机核心基础,与运行程序有关的三大核心硬件,操作系统 引子 python是什么? 什么是编程语言?为何要有编程语言? 什么是编程?什么是程序?什么是进程?为何要编程? 计算机基础 ...

  7. 风变编程(Python自学笔记)第12关-我们都是中国人

    1.类的个例叫做实例:类,是对某个群体的统称(类是某个特定的群体),实例是群体中某个具体的个体. 2.Python中的对象等于类和实例的集合. 3. 类的创建:class+类名+冒号,后面语句要缩进. ...

  8. VS·.Net WCF多项目调试方法

    阅文时长 | 0.12分钟 字数统计 | 252.8字符 主要内容 | 1.引言&背景 2.声明与参考资料 『VS·.Net WCF多项目调试方法』 编写人 | SCscHero 编写时间 | ...

  9. zip密码破解小脚本

    zip密码破解小脚本 博主: 逍遥子 发布时间:2018 年 05 月 31 日 2745次浏览 1 条评论 1074字数 分类: kali 专栏 首页 正文 分享到:    文件源码 import ...

  10. WPS-插入-公式-菜单 怎样在EXCEL中使用PRODUCT函数

    怎样在EXCEL中使用PRODUCT函数 ################   WPS2018 -插入-公式-[专门有公式菜单] 插入函数       ##################       ...