Python 之Web应用开发(Flask框架)

一 Python 简介

1.1 Python是继C++,java,C#等编程语言之后又一种面向对象的高级语言,凭借着简单的语法和和丰富的库,2015年开始迅速发展,到今天已成为排行前三的最受欢迎榜。

1.2 Python 应用领域非常广泛,经常用于以下领域:

  • 数据分析与科学计算:使用库如 NumPy、Pandas 和 SciPy 进行数据处理和分析。
  • 机器学习与人工智能:借助 TensorFlow、Keras 和 Scikit-learn 等库实现机器学习和深度学习模型。
  • 网络开发:使用 Django、Flask 等框架构建网站和 Web 应用。
  • 自动化与脚本编写:使用 Python 编写脚本以自动化日常任务,如文件处理、数据抓取等。
  • 游戏开发:利用 Pygame 等库开发简单的 2D 游戏。
  • 科学与数学计算:许多科学家和工程师使用 Python 进行模拟和计算。
  • 图像处理:使用 OpenCV 和 PIL 等库处理和分析图像。
  • 网络爬虫:利用 BeautifulSoup 和 Scrapy 等库抓取网页数据。

二  PyCharm 创建Flask项目

2.1 首先要安装Flask库

pip install Flask

查看是否安装成功

pip show Flask 

2.2 pycharm新建Flask项目

 创建第一个py文件 

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

运行后控制台会显示出本地访问路径

 点击链接会跳转浏览器,可以看到输出

Hello World! 

2.3 代码解析

  • from flask import Flask: 这行代码从 flask 模块中导入了 Flask 类。Flask 类是 Flask 框架的核心,用于创建 Flask 应用程序实例。

  • app = Flask(__name__): 这行代码创建了一个 Flask 应用实例。__name__ 是一个特殊的 Python 变量,它在模块被直接运行时是 '__main__',在被其他模块导入时是模块的名字。传递 __name__ 给 Flask 构造函数允许 Flask 应用找到和加载配置文件。

  • @app.route('/'): 这是一个装饰器,用于告诉 Flask 哪个 URL 应该触发下面的函数。在这个例子中,它指定了根 URL(即网站的主页)。

  • def hello_world():: 这是定义了一个名为 hello_world 的函数,它将被调用当用户访问根URL时。

  • return 'Hello, World!': 这行代码是 hello_world 函数的返回值。当用户访问根 URL 时,这个字符串将被发送回用户的浏览器。

  • if __name__ == '__main__'::这行代码是一个条件判断,用于检查这个模块是否被直接运行,而不是被其他模块导入。如果是直接运行,下面的代码块将被执行。

  • app.run(debug=True):这行代码调用 Flask 应用实例的 run 方法,启动 Flask 内置的开发服务器。debug=True 参数会启动调试模式,这意味着应用会在代码改变时自动重新加载,并且在发生错误时提供一个调试器。

2.4 Flask 基本概念

  • 路由:路由是 URL 到 Python 函数的映射。Flask 允许你定义路由,这样当特定的 URL 被访问时,就会调用相应的函数。

  • 视图函数:视图函数是处理请求并返回响应的 Python 函数。它们通常接收请求对象作为参数,并返回响应对象。

  • 请求对象:请求对象包含了客户端发送的请求信息,如请求方法、URL、请求头、表单数据等。

  • 响应对象:响应对象包含了发送给客户端的响应信息,如状态码、响应头、响应体等。

  • 模板:Flask 使用 Jinja2 模板引擎来渲染 HTML 模板。模板允许你将 Python 代码嵌入到 HTML 中,从而动态生成网页。

  • 应用工厂:应用工厂是一个 Python 函数,它创建并返回一个 Flask 应用实例。这允许你配置和初始化你的应用,并且可以创建多个应用实例。

  • 配置对象:Flask 应用有一个配置对象,你可以使用它来设置各种配置选项,如数据库连接字符串、调试模式等。

  • 蓝图:蓝图是 Flask 中的一个组织代码的方式,它允许你将相关的视图函数、模板和静态文件组织在一起,并且可以在多个应用中重用。

  • 静态文件:静态文件是不会被服务器端执行的文件,如 CSS、JavaScript 和图片文件。Flask 提供了一个简单的方法来服务这些文件。

  • 扩展:Flask 有许多扩展,可以添加额外的功能,如数据库集成、表单验证、用户认证等。

  • 会话:Flask 使用客户端会话来存储用户信息,这允许你在用户浏览你的应用时记住他们的状态。

  • 错误处理:Flask 允许你定义错误处理函数,当特定的错误发生时,这些函数会被调用。

三,Flask项目部署阿里云服务器

3.1  前提已经有阿里云ECS服务器实例,登录宝塔页面可以快速创建Flask项目

3.2 添加ECS安全组2221

3.3  配置域名访问,可以配置二级域名

3.4 打开外网映射

3.5 如果出现需要打开防火墙访问,那需要在终端开启2221端口的防火墙

 输入以下指令:

firewall-cmd --zone=public --add-port=2221/tcp --permanent
 systemctl restart firewalld.service
 firewall-cmd --query-port=2221/tcp

3.6 上传文件

我们把本地的Flask项目文件上传到ECS服务器,改下内容,返回常用json字符串结构

from flask import Flask

import json
app = Flask(__name__)

@app.route('/')
def hello_world():  # put application's code here
    # Python 字典类型转换为 JSON 对象
    data = {
        'code': 200,
        'msg': '请求成功',
        'data': '123456789'
    }

    json_str = json.dumps(data)
    return json_str

if __name__ == '__main__':
    app.run()

把本地文件拖拽到这里就可以了

资源变动需要重启网站

浏览器输入[域名:端口]访问该python网站

四 注意点

4.1 要先下载安装python,目前最新版本是python3,最好用新版的,不然项目会出很多兼容性问题

4.2 pycharm 编辑器最好也配合python用最新的,不然Flask框架都下载不下来