Flask & GitHub:快速入门及实践 – wiki基地


Flask & GitHub:快速入门及实践

引言:Web 开发的轻量级伙伴与代码管理利器

在当今的软件开发领域,Web 应用扮演着越来越重要的角色。无论是构建简单的个人博客、功能丰富的企业应用,还是高性能的 API 服务,都需要合适的工具来提高效率和管理代码。

Python 作为一种简洁、易读且功能强大的编程语言,在 Web 开发领域拥有众多优秀的框架。其中,Flask 以其轻量级、灵活和易于入门的特性,成为了许多开发者,尤其是初学者的首选。它不像一些全功能框架那样包含大量预设的组件和决策,而是提供核心功能,允许开发者根据需求自由选择和集成其他库。

与此同时,代码的版本控制和协作管理是现代软件开发的基石。Git 作为分布式版本控制系统,已经成为事实上的标准,而 GitHub 则是基于 Git 的全球最大的代码托管平台,提供了强大的协作、问题跟踪、持续集成等功能。

将 Flask 的高效开发能力与 GitHub 的强大代码管理和协作能力结合起来,是构建和管理 Web 项目的绝佳实践。本文将带领你从零开始,快速入门 Flask,了解 Git 的基本操作,并最终学习如何将你的 Flask 项目置于 GitHub 的管理之下,进行版本控制和分享。

我们将通过详细的步骤和代码示例,让你亲手实践:

  1. Flask 快速入门:搭建开发环境,创建并运行第一个 Flask 应用。
  2. Git 与 GitHub 基础:了解 Git 的核心概念,学习在本地使用 Git,并在 GitHub 上创建仓库。
  3. 整合实践:将你的 Flask 项目纳入 Git 管理,推送到 GitHub,并进行简单的代码修改和版本迭代。

准备好了吗?让我们开始这段 Flask 与 GitHub 的探索之旅!

第一部分:Flask 快速入门

1.1 什么是 Flask?为什么选择它?

Flask 是一个使用 Python 编写的微框架。这里的“微”意味着它只提供构建 Web 应用的基础功能,例如请求处理、路由、模板渲染等。它没有内置数据库抽象层、表单验证等复杂功能,这使得 Flask 非常灵活,开发者可以自由选择合适的库来集成。

为什么选择 Flask?

  • 简洁与易学:代码结构清晰,API 设计直观,非常适合初学者快速上手。
  • 灵活与自由:不强制规定项目结构,允许你根据项目需求选择和组合各种库。
  • 轻量级:核心库体积小,依赖少,启动速度快。
  • 活跃的社区和丰富的扩展:拥有庞大的用户群体和大量的第三方扩展,可以方便地为项目添加功能。
  • 非常适合小型项目和API服务:其简洁性使其成为构建小型网站、原型或 RESTful API 的理想选择。

1.2 搭建 Flask 开发环境

在开始编写 Flask 应用之前,你需要搭建一个合适的开发环境。

1. 安装 Python

确保你的系统中安装了 Python 3.6 或更高版本。你可以访问 Python 官方网站 (python.org) 下载适合你操作系统的安装包。安装完成后,打开终端或命令行工具,输入 python --versionpython3 --version 检查 Python 版本。

2. 使用虚拟环境 (Virtual Environment)

强烈建议为每个 Python 项目创建一个独立的虚拟环境。虚拟环境可以隔离项目所需的依赖库,避免不同项目之间的库版本冲突。

  • 创建虚拟环境:在你的项目文件夹(例如 my_flask_app)内打开终端,运行以下命令:

    bash
    python -m venv .venv

    这会在当前目录下创建一个名为 .venv 的文件夹,里面包含了新的 Python 解释器和用于安装库的 pip 工具。

  • 激活虚拟环境

    • macOS/Linux:
      bash
      source .venv/bin/activate
    • Windows (Command Prompt):
      bash
      .venv\Scripts\activate.bat
    • Windows (PowerShell):
      bash
      .venv\Scripts\Activate.ps1

      激活成功后,你的终端提示符前会显示虚拟环境的名称 (例如 (.venv))。

3. 安装 Flask

在已经激活的虚拟环境中使用 pip 安装 Flask:

bash
pip install Flask

等待安装完成。现在你的环境中已经准备好了 Flask。

1.3 创建第一个 Flask 应用 (“Hello, World!”)

现在,让我们编写一个最简单的 Flask 应用。

  1. 在项目文件夹 (my_flask_app) 中创建一个新的 Python 文件,命名为 app.py
  2. 将以下代码复制到 app.py 文件中:

    “`python

    导入 Flask 类

    from flask import Flask

    创建一个 Flask 应用实例

    name 是一个特殊的 Python 变量,用于确定应用根目录

    app = Flask(name)

    使用 @app.route() 装饰器定义 URL 路由

    当用户访问网站的根路径 (/) 时,会触发下面的函数

    @app.route(‘/’)
    def hello_world():
    # 函数返回一个字符串,这个字符串将被发送到用户的浏览器
    return ‘Hello, World from Flask!’

    如果直接运行此脚本,启动开发服务器

    if name == ‘main‘:
    # debug=True 会开启调试模式,代码修改后会自动重载,并提供调试信息
    app.run(debug=True)
    “`

1.4 运行 Flask 应用

在已经激活了虚拟环境的终端中,运行以下命令来启动你的 Flask 应用:

bash
python app.py

或者使用 Flask 官方推荐的命令:

bash
flask run

(如果你使用了 flask run 命令,有时需要先设置 FLASK_APP=app.py 环境变量,或者 Flask 会自动检测 app.pywsgi.py 文件)

当你运行 python app.py 并在代码中使用了 if __name__ == '__main__': app.run() 时,你会在终端看到类似如下的输出:

* Serving Flask app 'app' (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: XXX-XXX-XXX

这表示你的 Flask 应用已经在本地的 http://127.0.0.1:5000/ 地址(通常是 localhost 的 5000 端口)上运行起来了。

打开你的网页浏览器,访问 http://127.0.0.1:5000/。你应该能看到页面上显示着:Hello, World from Flask!

恭喜!你已经成功创建并运行了你的第一个 Flask 应用。

代码解释:

  • from flask import Flask: 从安装好的 Flask 库中导入 Flask 类。
  • app = Flask(__name__): 创建一个 Flask 类的实例,并将其赋值给变量 app。这是你的 Web 应用的核心对象。__name__ 参数帮助 Flask 找到应用所在的根目录,以便查找资源文件(如模板文件)。
  • @app.route('/'): 这是一个装饰器。它告诉 Flask,当用户通过 GET 请求访问 URL / (网站根目录) 时,应该调用紧随其后的 hello_world() 函数。
  • def hello_world():: 定义一个 Python 函数。当访问 / 路由时,这个函数会被执行。
  • return 'Hello, World from Flask!': 函数返回一个字符串。Flask 会把这个字符串作为 HTTP 响应的主体发送回浏览器。
  • if __name__ == '__main__':: 这是一个标准的 Python 结构,意思是当这个脚本被直接运行时(而不是被导入为模块),执行下面的代码块。
  • app.run(debug=True): 启动 Flask 内置的开发服务器。debug=True 参数开启了调试模式,这在开发阶段非常有用,它会在代码出错时提供详细的调试信息,并且在你修改代码后会自动重启服务器。

你现在已经掌握了 Flask 的最基础知识:创建应用实例、定义路由以及运行开发服务器。

第二部分:Git 与 GitHub 基础

掌握了构建基础 Web 应用的能力,接下来我们需要学习如何有效地管理代码。这时,Git 和 GitHub 就派上用场了。

2.1 什么是 Git?什么是 GitHub?

  • Git:是一个分布式版本控制系统。它记录你代码的修改历史,你可以随时回溯到之前的版本,比较不同版本之间的差异,甚至在没有网络的情况下进行大部分操作。Git 强调“快照”,每次提交(commit)都保存了项目在某个特定时间点的完整状态。
  • GitHub:是一个基于 Git 的在线代码托管平台。它提供了存储 Git 仓库的空间,并在此基础上增加了许多协作功能,如:
    • 远程仓库:方便备份代码和在不同设备上同步。
    • 协作:多人可以方便地在同一个项目上工作(Pull Requests, Issues等)。
    • 代码分享:轻松展示你的项目或贡献开源项目。
    • 其他服务:代码审查、问题追踪、项目管理、CI/CD 集成等。

简单来说,Git 是你本地的版本控制工具,而 GitHub 是你在云端的 Git 仓库托管服务和协作平台。

2.2 安装 Git

在开始使用 Git 之前,你需要先安装它。

  • macOS: 如果安装了 Xcode 命令行工具或 Homebrew,Git 通常已经安装。如果没有,可以通过 Homebrew 安装:brew install git
  • Windows: 从 Git 官方网站下载 Git for Windows 安装包 (git-scm.com),按照安装向导进行安装(推荐使用默认选项,或者选择适合你的命令行工具)。
  • Linux: 大多数 Linux 发行版可以通过包管理器安装。例如,在 Debian/Ubuntu 上使用 sudo apt-get install git,在 Fedora 上使用 sudo dnf install git

安装完成后,打开终端或命令行工具,输入 git --version 检查 Git 版本,确保安装成功。

2.3 配置 Git

首次使用 Git,需要配置你的用户名和邮箱。这些信息会附加到你的每一次提交中,用于标识提交者。

bash
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"

"你的名字""你的邮箱@example.com" 替换为你自己的信息。--global 参数表示这是全局配置,对你电脑上的所有 Git 仓库生效。

2.4 在 GitHub 上创建仓库

  1. 访问 github.com,如果你没有账号,先注册一个。
  2. 登录你的 GitHub 账号。
  3. 在页面右上角,点击加号 (+) 图标,选择 “New repository” (新建仓库)。
  4. Repository name (仓库名称): 输入一个名称,例如 my-flask-hello-world
  5. Description (描述) (可选): 简单描述你的项目。
  6. Public 或 Private: 选择公开或私有仓库。对于大多数学习项目,公开是没问题的。
  7. Initialize this repository with:
    • Add a README file: 勾选,README 文件是项目的说明文档。
    • Add .gitignore: 选择 Python 模板。.gitignore 文件告诉 Git 忽略某些文件或文件夹(例如虚拟环境、编译缓存等),这些文件不应该被版本控制。这非常重要!
    • Choose a license: 可选,选择一个开源许可证。
  8. 点击 “Create repository” 按钮。

GitHub 会为你创建一个新的空仓库(或者包含 README 和 .gitignore 的仓库)。创建成功后,你会看到仓库的主页,其中包含了仓库的 HTTPS 或 SSH 地址。我们稍后会用到这个地址来连接本地仓库和远程仓库。

2.5 本地 Git 基本操作

现在,我们回到本地的项目文件夹 (my_flask_app),开始使用 Git 进行版本控制。

  1. 初始化本地仓库
    在你的项目文件夹 my_flask_app 内打开终端,运行:

    bash
    git init

    这会在 my_flask_app 文件夹中创建一个隐藏的 .git 文件夹,表示这个文件夹现在是一个 Git 仓库了。

  2. 检查工作区状态
    随时可以使用 git status 命令查看当前工作区的文件状态:

    bash
    git status

    刚初始化完仓库后,它会告诉你有哪些文件是 Untracked files (未跟踪文件)。

  3. 暂存文件 (Add)
    你需要告诉 Git 哪些文件是你想要纳入版本控制的。使用 git add 命令将文件从工作区添加到暂存区 (Staging Area)。

    bash
    git add app.py
    git add .gitignore # 如果你手动创建了或者想添加其他文件

    git add . 可以将当前目录下的所有未跟踪或已修改文件添加到暂存区。

    再次运行 git status,你会看到文件状态变成了 “Changes to be committed” (将要被提交的更改)。

  4. 提交更改 (Commit)
    当你在暂存区准备好了要提交的文件后,使用 git commit 命令将暂存区的快照永久保存到本地仓库的历史记录中。

    bash
    git commit -m "feat: initial commit of Flask app"

    -m 参数用于提供一个简短的提交信息 (commit message)。提交信息非常重要,它应该清晰地描述这次提交做了哪些改动。良好的提交信息习惯有助于日后回顾历史记录。

    提交后,再次运行 git status,你会看到工作区是干净的 (nothing to commit, working tree clean)。

现在,你的 Flask 项目的第一个版本已经成功保存在本地 Git 仓库中了。

第三部分:整合实践 – Flask 项目与 GitHub

现在我们将 Flask 应用与 GitHub 结合起来。

3.1 将本地仓库关联到远程 GitHub 仓库

在你在 GitHub 上创建仓库时,GitHub 会提供将本地仓库关联到它的命令。找到你的 GitHub 仓库页面,你会看到类似以下的代码片段(假设你的仓库是空的,或者你选择不初始化 README 等文件):

“`bash
…or push an existing repository from the command line

git remote add origin https://github.com/你的GitHub用户名/my-flask-hello-world.git
git branch -M main
git push -u origin main
“`

如果你的 GitHub 仓库已经包含了 README 或 .gitignore,并且你想保留它们,你可能需要先 pull 下来合并。但对于新项目,通常更简单的方法是:

  1. 在本地项目目录 (my_flask_app) 中,运行 git init (如果之前没有做)。
  2. 添加并提交你的本地文件 (如 app.py 和你手动创建的 .gitignore)。
  3. 将本地仓库关联到远程仓库。复制 GitHub 页面上提供的 git remote add origin ... 命令并在本地终端运行:

    bash
    git remote add origin https://github.com/你的GitHub用户名/my-flask-hello-world.git

    这里的 origin 是远程仓库的别名,你可以改成其他名字,但 origin 是约定俗成的。URL 需要替换为你实际的 GitHub 仓库地址。

  4. 查看远程仓库设置:
    bash
    git remote -v

    会显示远程仓库的 fetch 和 push 地址。

  5. 推送本地提交到远程仓库
    使用 git push 命令将本地的提交发送到远程仓库。

    bash
    git push -u origin main

    * git push: 执行推送操作。
    * -u: 设置上游分支。这意味着以后你只需要简单地使用 git pushgit pull 就可以推送或拉取 origin 仓库的 main 分支。
    * origin: 指定远程仓库的别名。
    * main: 指定要推送的本地分支(默认是 main,旧版本可能是 master)。

    如果这是你第一次连接 GitHub,可能会要求输入你的 GitHub 用户名和密码(或者使用 Personal Access Token/SSH Key)。

    推送成功后,刷新你的 GitHub 仓库页面,你会看到 app.py 文件和你的提交记录已经出现在线上了。

3.2 使用 .gitignore 忽略不必要的文件

在上面的 GitHub 仓库创建步骤中,我们建议勾选添加 Python 的 .gitignore 文件。如果你手动创建了仓库,或者想自己添加,可以在项目根目录创建一个名为 .gitignore 的文件,并添加以下内容:

“`gitignore

Python

*.pyc
pycache/
venv/
.venv/
env/
.env/

Editor files

.vscode/ # Example for VS Code
.idea/ # Example for PyCharm

OS generated files

.DS_Store
Thumbs.db
“`

这个文件告诉 Git 忽略虚拟环境文件夹 (venv, .venv, env, .env)、Python 编译生成的 .pyc 文件和 __pycache__ 文件夹、编辑器配置文件以及操作系统生成的一些文件。这些文件通常不需要纳入版本控制。

如果你在执行 git add 之前创建了 .gitignore 文件,Git 就会忽略这些文件。如果你在已经跟踪了某些文件之后添加 .gitignore(例如不小心将 venv 添加进去了),你需要先将它们从 Git 跟踪中移除(但保留在本地):

bash
git rm -r --cached .venv/ # 移除虚拟环境文件夹的跟踪
git commit -m "feat: add .gitignore and remove venv from tracking"
git push origin main

3.3 迭代开发与版本控制

现在,你的 Flask 项目已经在 Git 和 GitHub 的管理下了。让我们进行一次简单的代码修改,并体验完整的 Git 工作流程。

假设你想在应用中添加一个 /greet 的路由,当访问 /greet/你的名字 时,显示个性化的问候。

  1. 修改代码
    打开 app.py,添加一个新的路由和函数:

    “`python
    from flask import Flask

    app = Flask(name)

    @app.route(‘/’)
    def hello_world():
    return ‘Hello, World from Flask!’

    添加一个新的路由,接受一个名为 name 的变量

    表示 name 是一个字符串类型的变量

    @app.route(‘/greet/‘)
    def greet(name):
    # 返回包含 name 的问候语
    return f’Hello, {name}!’

    if name == ‘main‘:
    app.run(debug=True)
    “`

  2. 测试更改
    在终端确保虚拟环境已激活,运行 python app.py 启动应用。
    打开浏览器访问 http://127.0.0.1:5000/greet/Alice。你应该看到 Hello, Alice!。访问 http://127.0.0.1:5000/greet/Bob,你应该看到 Hello, Bob!

  3. 检查 Git 状态
    在终端中停止 Flask 应用 (Ctrl+C),然后运行:

    bash
    git status

    Git 会告诉你 app.py 文件已被修改 (modified)。

  4. 暂存更改
    将修改后的文件添加到暂存区:

    bash
    git add app.py

  5. 提交更改
    创建一个新的提交记录:

    bash
    git commit -m "feat: add /greet route with name parameter"

    (注意提交信息的格式,feat 通常表示新增功能)

  6. 推送到 GitHub
    将本地的新提交推送到远程仓库:

    bash
    git push origin main

    因为之前使用了 -u 参数,现在只需要 git push 就可以了。

    推送成功后,刷新你的 GitHub 仓库页面,你会看到新的提交记录出现在历史中,并且 app.py 文件也已经被更新。

这样,你就完成了一次开发迭代:修改代码 -> 测试 -> 暂存 -> 提交 -> 推送。每一次提交都保存了项目的一个稳定版本,你可以随时查看历史、比较差异,甚至回滚到之前的版本。

3.4 进一步探索 (可选)

  • 分支 (Branching):Git 最强大的功能之一。你可以在一个独立的分支上开发新功能,不影响主分支 (main)。开发完成后,再将分支合并回主分支。这是多人协作和复杂功能开发的基础。
  • 拉取请求 (Pull Requests):在 GitHub 上,当你向一个仓库推送了新的分支或提交后,可以创建一个拉取请求 (PR)。PR 是一个讨论和审查代码变更的机制,其他协作者可以在合并到主分支之前检查你的代码、提出建议。
  • 克隆仓库 (Clone):如果你想获取一个现有的远程仓库到本地,使用 git clone <repository_url> 命令。
  • 拉取更新 (Pull):当远程仓库有其他人提交的新内容时,使用 git pull origin main 将最新的更改拉取到你的本地分支。

结论

恭喜你!通过本文的学习,你已经掌握了 Flask 的基础知识,能够搭建开发环境并运行一个简单的 Web 应用。同时,你也学习了 Git 的核心概念和基本命令,并在 GitHub 上创建了仓库,将本地的 Flask 项目成功地置于版本控制之下。

Flask 的轻量级和灵活性,结合 Git 的强大版本控制能力和 GitHub 的便捷协作平台,为你提供了一个高效、可靠的 Web 项目开发和管理流程。

这只是起点。接下来,你可以继续深入学习 Flask 的更多特性,如:

  • 模板引擎 (Jinja2):生成动态 HTML 页面。
  • 表单处理 (Flask-WTF):处理用户提交的表单数据。
  • 数据库集成 (SQLAlchemy):与数据库进行交互。
  • 蓝图 (Blueprints):组织大型应用的代码结构。
  • RESTful API 构建:使用 Flask 构建 API 服务。

同时,你也可以更深入地学习 Git 的高级用法,参与开源项目,或者在 GitHub 上与他人协作。

希望这篇文章为你打下了坚实的基础,祝你在 Web 开发的道路上越走越远!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部