Flask 快速入门

引言

Flask 是一个轻量级的Web框架,以简洁和灵活而著称。它提供了构建Web应用所需的基本工具,同时保持了足够的可扩展性,使其成为初学者和有经验的开发人员的首选。本系列专栏将带领大家逐步深入学习 Flask,从最基础的概念开始,逐步进阶至更高级的主题。

为什么选择 Flask

  1. 轻量级和简单: Flask 的设计理念是保持简单,使开发者能够专注于应用的逻辑而不被过多的框架代码干扰。

  2. 灵活性: Flask 是一个微框架,提供了基础的工具,但允许你根据项目的需要选择和集成其他库和工具。

  3. 易学易用: Flask 的文档清晰,社区活跃,对于初学者来说,是学习Web开发的绝佳选择。

前置准备:虚拟环境

虚拟环境是Python项目中推荐的一种良好实践,它使项目的依赖隔离开来。在终端中执行以下命令安装虚拟环境工具:

官方推荐:pipenv

pipenv 是一个用于 Python 项目的依赖管理工具,它结合了 pipvirtualenvpyenv 的功能,提供了更简洁、一致的工作流。

  • 安装 pipenv
bash 复制代码
pip install pipenv
  • 创建虚拟环境并安装依赖
  1. 进入你的项目目录,并运行以下命令:
bash 复制代码
cd your_project_directory
pipenv install

这将会创建一个新的虚拟环境,并在项目根目录下生成 PipfilePipfile.lock 文件。

  1. 如果你有一个 requirements.txt 文件,也可以使用以下命令:
bash 复制代码
pipenv install -r requirements.txt
  • 进入虚拟环境
bash 复制代码
pipenv shell

终端提示符会变成虚拟环境的名称,表示已经在虚拟环境中。

  • 安装新的依赖
bash 复制代码
pipenv install package_name

这将自动更新 Pipfile 文件,并将依赖项添加到 Pipfile.lock

  • 退出虚拟环境
bash 复制代码
exit
  • 其他常用命令
bash 复制代码
# 查看虚拟环境中安装的包
pipenv graph

# 卸载依赖
pipenv uninstall package_name

# 查看虚拟环境路径
pipenv --venv

# 查看 Python 解释器路径
pipenv --py

# 检查安全性漏洞
pipenv check
  • 使用 Pipfile 和 Pipfile.lock

Pipfile 文件用于指定项目的依赖关系,而 Pipfile.lock 文件用于确保项目的每次构建使用相同的依赖版本。这两个文件是配套使用的,Pipfile.lock 不需要手动编辑。

在团队合作时,你可以将 PipfilePipfile.lock 文件一同提交到版本控制系统,确保每个人都使用相同的依赖环境。

Pipfile 示例:

toml 复制代码
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[dev-packages]

[packages]
requests = "*"
flask = "*"

[requires]
python_version = "3.8"

Pipfile.lock 示例:

json 复制代码
{
    "_meta": {
        "requires": {
            "python_version": "3.8"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "flask": {
            "hashes": [
                "sha256:abc123..."
            ],
            "version": "==1.0.2"
        },
        "requests": {
            "hashes": [
                "sha256:def456..."
            ],
            "version": "==2.25.1"
        }
    }
}

pipenv 简化了 Python 项目的依赖管理,提供了一种更清晰和一致的方式来定义和安装依赖。

其他:venv

venv 是 Python 自带的用于创建虚拟环境的工具。

    1. 创建虚拟环境

打开终端或命令提示符,然后移动到你项目的目录中。运行以下命令来创建一个名为 myenv 的虚拟环境:

bash 复制代码
python3 -m venv myenv

这将在当前目录下创建一个名为 myenv 的虚拟环境。

    1. 激活虚拟环境

激活虚拟环境可以确保你在该环境中执行的 Python 脚本使用该虚拟环境的解释器和包。在终端中运行以下命令激活虚拟环境:

  • Windows:
bash 复制代码
myenv\Scripts\activate
  • Linux/Mac:
bash 复制代码
source myenv/bin/activate

激活后,你的命令提示符会显示虚拟环境的名称(例如,(myenv)),表示你当前在虚拟环境中。

    1. 在虚拟环境中安装包

在虚拟环境中,你可以使用 pip 安装任何你需要的包,而这些包将仅对当前虚拟环境可见。

bash 复制代码
pip install package_name
    1. 运行 Python 脚本

在虚拟环境中,你可以运行 Python 脚本,而这些脚本将使用虚拟环境中的 Python 解释器和安装的包。

bash 复制代码
python your_script.py
    1. 退出虚拟环境

当你完成工作时,可以使用以下命令退出虚拟环境:

bash 复制代码
deactivate
  • 注意事项:

虚拟环境的名称和目录结构是可以自定义的,上述命令中的 myenv 只是一个示例。

在虚拟环境中,你可以使用 pip freeze 命令生成 requirements.txt 文件,以便记录项目的依赖关系。

为了便于项目迁移,最好将虚拟环境放在项目目录之外,例如创建一个名为 venv 的目录,并将虚拟环境放在其中。

使用 venv 虚拟环境可以确保项目有独立的 Python 运行环境,防止包冲突和版本问题。

quick start

步骤 1: 创建 Flask 应用

创建一个新的目录,进入该目录,并在其中创建一个名为 app.py 的文件。

bash 复制代码
mkdir my_flask_app
cd my_flask_app
touch app.py

步骤 2: 安装 Flask

进入虚拟环境,然后安装flask

bash 复制代码
pip install flask

步骤 3: 编写第一个 Flask 应用

app.py 文件中编写以下代码:

python 复制代码
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, Flask!'

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

步骤 4: 运行 Flask 应用

在终端运行应用:

bash 复制代码
python app.py

你将看到输出提示,表明 Flask 应用正在运行。在浏览器中访问 http://localhost:5000/,将看到 "Hello, Flask!"。

步骤 5: 使用模板引擎

Flask 使用 Jinja2 作为模板引擎。让我们添加一个简单的模板,以渲染 HTML 页面。

  1. my_flask_app 目录中创建一个名为 templates 的文件夹。
bash 复制代码
mkdir templates
  1. templates 文件夹中创建一个名为 index.html 的文件。
html 复制代码
<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flask Template Example</title>
</head>
<body>
    <h1>{{ greeting }}</h1>
</body>
</html>
  1. 更新 app.py 文件以使用模板。
python 复制代码
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hello():
    return render_template('index.html', greeting='Hello, Flask with Templates!')

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

现在,当访问 / 路由时,Flask 将渲染 index.html 模板,并将 greeting 变量传递给模板。

步骤 6: 接受用户输入

让我们添加一个简单的表单,允许用户输入名字。

  1. 更新 templates/index.html 文件。
html 复制代码
<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flask Template Example</title>
</head>
<body>
    <form method="post" action="{{ url_for('greet') }}">
        <label for="name">Enter your name:</label>
        <input type="text" id="name" name="name" required>
        <button type="submit">Greet</button>
    </form>
</body>
</html>
  1. 更新 app.py 文件以处理表单提交。
python 复制代码
from flask import Flask, render_template, request, redirect, url_for

app = Flask(__name__)

@app.route('/')
def hello():
    return render_template('index.html')

@app.route('/greet', methods=['POST'])
def greet():
    name = request.form.get('name', 'Guest')
    return f'Hello, {name}!'

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

现在,当用户在表单中输入他们的名字并点击 "Greet" 按钮时,Flask 将显示个性化的问候语。

官方文档:https://flask.palletsprojects.com/

相关推荐
fish_study_csdn5 小时前
pytest 技术总结
开发语言·python·pytest
柏油5 小时前
MySQL InnoDB 行锁
数据库·后端·mysql
咖啡调调。5 小时前
使用Django框架表单
后端·python·django
BO_S__5 小时前
python调用ffmpeg对截取视频片段,可批量处理
python·ffmpeg·音视频
白泽talk5 小时前
2个小时1w字| React & Golang 全栈微服务实战
前端·后端·微服务
摆烂工程师5 小时前
全网最详细的5分钟快速申请一个国际 “edu教育邮箱” 的保姆级教程!
前端·后端·程序员
一只叫煤球的猫6 小时前
你真的会用 return 吗?—— 11个值得借鉴的 return 写法
java·后端·代码规范
就叫飞六吧6 小时前
如何判断你的PyTorch是GPU版还是CPU版?
人工智能·pytorch·python
Asthenia04126 小时前
HTTP调用超时与重试问题分析
后端
颇有几分姿色6 小时前
Spring Boot 读取配置文件的几种方式
java·spring boot·后端