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/

相关推荐
cnxy1886 小时前
围棋对弈Python程序开发完整指南:步骤4 - 提子逻辑和劫争规则实现
开发语言·python·机器学习
NAGNIP6 小时前
多个 GitHub 账户SSH 密钥配置全攻略
后端
NAGNIP6 小时前
Windows命令行代码自动补全详细步骤
后端
TheSumSt6 小时前
Python丨课程笔记Part3:语法进阶部分(控制结构与基础数据结构)
数据结构·笔记·python
追逐时光者7 小时前
精选 8 款 .NET 开源、前后端分离的快速开发框架,提高开发生产效率!
后端·.net
ha_lydms7 小时前
5、Spark函数_s/t
java·大数据·python·spark·数据处理·maxcompute·spark 函数
用户47949283569157 小时前
性能提升 4000%!我是如何解决 运营看板 不能跨库&跨库查询慢这个难题的
数据库·后端·postgresql
电商API&Tina7 小时前
跨境电商 API 对接指南:亚马逊 + 速卖通接口调用全流程
大数据·服务器·数据库·python·算法·json·图搜索算法
Yyyyy123jsjs7 小时前
外汇Tick数据交易时段详解与Python实战分析
人工智能·python·区块链
老华带你飞8 小时前
农产品销售管理|基于java + vue农产品销售管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端