Python Web 开发入门。
Python是一种解释型、面向对象的高级编程语言,具有动态语义。它内置了高级数据结构,结合动态类型和动态绑定,使其在快速应用程序开发方面极具吸引力,同时也非常适合用作脚本语言或粘合语言,将现有组件连接起来。
Python 有许多框架,每个框架都针对其特定的应用程序开发方向。在本训练营中,我们将重点学习 Flask 和 FastAPI。
Web框架
Web框架是一种架构,它包含各种工具、库和功能,适用于以快速高效的方式构建和维护大型Web项目。
它们的设计旨在简化程序并促进代码重用。
要创建Web应用程序的服务器端,您需要使用服务器端语言。Python拥有众多此类框架,其中以Django、Flask和FastAPI最为著名。
FastAPI
根据官方文档,FastAPI 是一个现代化的、快速(高性能)的 Web 框架,用于基于标准 Python 类型提示,使用 Python 3.6 及更高版本构建 API。
顾名思义,FastAPI 速度极快,这得益于它对 Python 3.6 及更高版本异步特性的开箱即用支持。因此,建议使用最新版本的 Python。
包括微软、Uber 和 Netflix 在内的多家科技巨头已经在使用 FastAPI 构建其应用程序。
FastAPI 的主要特性
-
速度快:它提供了非常高的性能,可与 NodeJS 和 Go 相媲美(这要归功于 Starlette 和 Pydantic)。它被认为是目前速度最快的 Python 框架之一。
-
编码速度快:可将应用程序开发速度提高约 200% 至 300%。
-
直观易用:它提供了强大的编辑器支持。开发者无需花费太多时间调试代码,即可验证代码语法是否正确。
-
减少错误:可减少约 40% 的人为(开发人员)引起的错误。
-
简单易用:它的设计宗旨就是易于使用和学习。此外,官方文档清晰明了、结构严谨,因此阅读起来也更加省时。
-
简而言之:它有助于最大限度地减少代码重复。它通过每个参数声明提供多种功能。此外,它的错误也更少。
-
基于标准:它基于(并完全兼容)API 的开放标准,OpenAPI(以前称为 Swagger)和 JSON 模式。
-
功能强大:获取可用于生产环境的代码,并自动生成交互式文档。
Python虚拟环境。
通常情况下,拥有一个或多个 Python 环境会很有用,这样你就可以在不影响主安装的情况下尝试不同的软件包组合。Python
通过虚拟环境支持这一点。虚拟环境是现有 Python 版本的副本,并可以选择继承现有软件包。
当你需要在共享系统上工作且没有安装软件包的权限时,虚拟环境也很有用,因为你可以在虚拟环境中安装它们。
创建Python虚拟环境。
1)安装 virtualenv 包
>>> pip3 install virtualenv
2). 创建虚拟环境,在本例中称为 dev。
>>> python3 -m venv dev
或者
virtualenv dev
3)激活虚拟环境
Mac OS / Linux:
>>> source dev/bin/activate
视窗:
>>> dev\Scripts\activate
4)停用虚拟环境。
要停用虚拟环境并使用您原来的 Python 环境,只需输入“deactivate”即可。
>>> deactivate
Python virtualenv 文档: https://docs.python.org/3/tutorial/venv.html
Hello World FASTAPI 应用
from typing import Optional
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return { "Message": "Hello World" }
运行 Hello World 程序 🥳 🥳 🥳 :
请确保您已使用以下命令安装 uvicord:
>>> pip install uvicorn[standard]
每次进行更改后,运行服务器时都应提示重新加载:
>>> uvicorn main:app --reload
更多 FastAPI 资源。
- 使用模板: https://fastapi.tiangolo.com/advanced/templates/
-
在 Amazon Web Services 上部署 FastAPI 服务:
https://adem.sh/blog/tutorial-fastapi-aws-lambda-serverless
烧瓶
Python Flask框架是一个基于 Werkzeug Jinja2 的轻量级微框架。
之所以称为微框架,是因为它旨在保持核心功能的精简,同时又具备良好的可扩展性,能够满足各种规模的应用需求。Flask
框架依赖于两个外部库:Jinja2 模板和 Werkzeug WSGI 工具包。
请记住使用虚拟环境,并在虚拟环境中运行以下命令:
>> pip install flask
或者
>>> pip3 install flask
Hello World Flask 应用程序
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == "__main__":
app.run(host = ”---”, port = ____, debug = ___)
- 创建 Flask 应用对象。
Python 的 Flask 模块包含了构建 Flask 应用所需的所有类和函数。Flask 类可以导入以创建主应用程序对象。它接受应用程序名称作为参数。
# Import Flask class
from flask import Flask
# Create Flask object
app = Flask(__name__)
- 正在运行 Flask 应用。
可以通过导出 FLASK_APP 环境变量并在终端运行 flask run 来运行 Flask 应用。
>>> export FLASK_APP=app.py
>>> flask run
创建路由。
在 Flask 应用中,可以通过定义视图函数并使用 `route()` 装饰器将其与 URL 关联来创建路由。路由指定 Flask 应用如何处理接收到的请求,例如在特定 URL 的网页上显示什么内容。
@app.route('/')
def hello_world():
return 'Hello, World!'
从路由返回 HTML。
在 Flask 应用中,视图函数可以返回 HTML 代码,以便在网页上渲染。HTML 代码可以以字符串形式返回。
@app.route('/')
def hello_world():
return '<h1>Hello, World!</h1>
变量规则。
变量规则允许 Flask 应用响应动态 URL。URL 中的可变部分可以用尖括号和一个可选的转换器 ` converter:variable_name`来表示。这些可变部分随后会作为参数传递给视图函数。
@app.route('/page/<int:pg_num>')
def content(pg_num):
return f'<h1>Displaying results for page {pg_num}</h1>'
名称== "主要"。
if __name__ == "__main__"
app.run(host = ” --- ”, port = ____, debug = ___)
`if name == " main "`条件检查实际上只是在检查正在执行的脚本是否为 app.py。
假设你创建了一个名为 utils.py 的脚本,其中只包含 `print( name )` 语句。如果你将 utils.py 导入到 app.py 中并运行 app.py,utils.py 中的 `print` 语句会输出 `utils`,也就是文件名。
在 app.py 的情况下,`name` 变量的值将是“main”。
笔记:
如果要安装支持异步功能的 Flask,请使用以下命令。
pip3 install flask[async]
然后使用 async 创建一个视图函数:
@app.route("/embed/<embed_id>")
async def get_embed(embed_id):
data = await async_render_embed(embed_id)
return data
注意:
Flask 中的异步支持是以附加组件的形式提供的🥲。
文章来源:https://dev.to/grayhat/getting-started-with-python-web-development-1jl9
