ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实验1、初入Flask

2021-05-12 22:03:12  阅读:181  来源: 互联网

标签:Flask mongodb devel 初入 Python 实验 install 安装


实验介绍

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

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

image


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

source venv/bin/activate

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

image


安装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]# 

image


下载并安装Flask

遵循以下步骤安装Flask

pip3 install flask

image

flask --help

image

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

image

安装成功后,使用以下命令配置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

image

之后输入mongo启动Mongodb。

image

Flask-"Hello World"

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

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

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

flask fab create-app

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

image

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

image

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

flask run

image

要在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观察结果

image

调试

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

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

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

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

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

FLASK_ENV=development flask run

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

image

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

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

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

image

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

image

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

image

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

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

locals()
globals()
self

image

测试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

image

实验总结

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

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

标签:Flask,mongodb,devel,初入,Python,实验,install,安装
来源: https://www.cnblogs.com/liuyangQAQ/p/14761895.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有