• Python
  • Flask是一个轻量级的Python Web框架

  • @ 2025-10-3 21:15:53

Flask是一个轻量级的Python Web框架,简单易用,非常适合初学者快速开发小型Web应用。以下是一份针对零基础的详细Flask教程:

环境搭建

  1. Python安装:访问Python官方网站,根据你的操作系统(Windows、Mac或Linux)下载并安装Python 3.x版本。安装时记得勾选“Add Python to PATH”,这样方便在命令行中使用Python。
  2. 选择Python开发环境:推荐使用PyCharm社区版,它是免费的,功能强大,提供代码自动补全、调试等功能。安装完成后,打开PyCharm,创建一个新的项目。
  3. 创建虚拟环境(可选但推荐):虚拟环境可以隔离不同项目的依赖,避免版本冲突。在命令行中执行以下操作:
    • 创建虚拟环境python -m venv myenv
    • 激活虚拟环境(Windows)myenv\Scripts\activate
    • 激活虚拟环境(Linux/Mac)source myenv/bin/activate
  4. 安装Flask:在激活的虚拟环境中,使用pip安装Flask,命令为pip install flask

第一个Flask应用

创建一个名为app.py的文件,编写以下代码:

from flask import Flask

# 创建Flask应用实例
app = Flask(__name__)

# 定义路由和视图函数
@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    # 启动应用
    app.run(debug=True)

在命令行中运行该文件,命令为python app.py。然后打开浏览器,访问http://127.0.0.1:5000,你将看到页面显示“Hello, World!”。

路由和视图函数

  1. 基本路由:Flask使用@app.route()装饰器来定义路由,将URL与视图函数关联起来。例如:
@app.route('/about')
def about():
    return 'This is the about page.'

访问http://127.0.0.1:5000/about即可看到相应的页面内容。

  1. 动态路由:可以在路由中使用变量,通过<variable_name>的形式定义,视图函数可以接收该变量作为参数。例如:
@app.route('/user/<username>')
def show_user_profile(username):
    return f'User: {username}'

访问http://127.0.0.1:5000/user/John,页面将显示“User: John”。

  1. 路由参数类型:可以指定变量的类型,如intfloat等。例如:
@app.route('/post/<int:post_id>')
def show_post(post_id):
    return f'Post ID: {post_id}'

访问http://127.0.0.1:5000/post/123,页面将显示“Post ID: 123”。

请求和响应

  1. 获取请求数据:Flask使用request对象来处理请求数据,如表单数据、查询参数等。例如:
from flask import Flask, request

app = Flask(__name__)

@app.route('/test')
def test():
    wd = request.args.get('wd')
    ie = request.values.get('ie')
    return f"Hello! {wd} == {ie}"

访问http://127.0.0.1:5000/test/?wd=python&ie=ok,可以获取到查询参数wdie的值。

  1. 响应对象:可以使用make_response()函数创建自定义响应对象,设置响应头、状态码等。例如:
from flask import make_response

def custom_response():
    resp = make_response('This is a custom response')
    resp.headers['Content-Type'] = 'text/plain'
    resp.status_code = 201
    return resp

模板渲染

Flask使用Jinja2模板引擎来渲染HTML页面。创建一个名为templates的文件夹,在其中创建一个index.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Home Page</title>
</head>
<body>
    <h1>Welcome to the Home Page!</h1>
    <p>Message: {{ message }}</p>
</body>
</html>

app.py中使用render_template()函数渲染模板:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/home')
def home():
    message = 'Hello from the server!'
    return render_template('index.html', message=message)

静态文件处理

创建一个名为static的文件夹,用于存放静态文件,如CSS、JavaScript和图片等。在HTML模板中引用静态文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Home Page</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
</head>
<body>
    <h1>Welcome to the Home Page!</h1>
</body>
</html>

4 条评论

  • @ 2025-10-5 20:02:58
    __name__  是 Python 内置的特殊变量,用于标识当前模块的运行状态,核心作用是区分“模块被直接运行”还是“被导入到其他模块”。
     
    - 当直接运行该模块时, __name__  的值会自动设为  "__main__" 。
    - 当模块被导入到其他模块中使用时, __name__  的值会自动设为该模块的文件名(不含  .py  后缀)。
     
    最常见的用途是给脚本写“主程序入口”,比如:
     
    python
      
    # 模块名为 example.py
    if __name__ == "__main__":
        # 只有直接运行 example.py 时,这部分代码才会执行
        print("我是直接运行的")
    else:
        # 被其他模块导入时,执行这里(可选)
        print("我是被导入的,我的模块名是", __name__)  # 会输出 "example"
     
     
    需要我帮你写一个包含  __name__  判断的具体
    
    • @ 2025-10-3 21:22:37

      以下是代码中每个英文单词(及符号)的汉字音译(尽量贴近发音,非标准翻译,仅为辅助记忆):

      # 从 弗拉斯克 这个 工具包 里,拿出"弗拉斯克"这个 神奇的 工具
      # 就像 从 工具箱 里 拿出 锤子 一样,我们 需要 它 来 搭建 网站
      弗罗姆 flask 伊姆波特 Flask
      
      # 创建 一个 弗拉斯克 应用 实例(就是 一个 网站 程序 的"本体")
      # __内姆__ 是 派森 的 小 魔法,表示 当前 这个 文件 的 名字
      # 给 网站 起个"代号",方便 弗拉斯克 知道 去 哪里 找 东西
      爱普 = Flask(__内姆__)
      
      # 定义 一个"路口"(路由):当 有人 访问 网站 的 首页(/ 就 代表 首页)时
      # 就 会 执行 下面 的 hello_world 函数,相当于"看到 首页 就 做 这件事"
      @爱普.入特('/')
      得夫 hello_world():
          # 这个 函数 的 作用 是:返回 一句话"哈喽,沃德!"
          # 当 有人 访问 首页 时,浏览器 就 会 显示 这句话
         瑞腾 'Hello, World!'
      
      # 这 是 一个 判断:如果 我们 直接 运行 这个 文件(而 不是 被 其他 程序 调用)
      # 就 执行 下面 的 代码,启动 网站
      伊夫 __内姆__ == '__梅因__':
          # 启动 网站 服务器,让 别人 可以 访问 你 的 网站
          # 迪ebug=出 表示"调试 模式":如果 改了 代码,网站 会 自动 更新,方便 我们 测试
          爱普.润(debug=出)
      

      说明:

      1. 音译尽量贴近英文发音(比如Flask译为“弗拉斯克”,Python译为“派森”);
      2. 特殊符号(如@=:)保留原样,方便对应代码结构;
      3. 部分单词(如debug)用“迪ebug”混合标注,兼顾发音和识别;
      4. 中文注释保持不变,帮助理解代码含义。

      这样的音译可以帮你在不认识英文单词时,先通过发音记住代码结构~

      • @ 2025-10-3 21:18:41

        以下是代码中英文单词的汉字音译表格(按代码顺序排列,尽量贴近发音,辅助记忆):

        英文单词/符号 汉字音译(贴近发音) 说明
        from 弗罗姆 表示“从……中”
        flask 弗拉斯克 Flask框架名称
        import 伊姆波特 表示“导入、引入”
        Flask 弗拉斯克(首字母大写) 框架核心类名
        app 爱普 变量名,代表应用实例
        = 等于 赋值符号
        name 双下划线内姆双下划线 Python内置变量
        @ 艾特 装饰器符号
        route 入特 表示“路由、路径”
        / 斜杠 代表网站首页路径
        def 得夫 定义函数的关键字
        hello_world 哈喽_沃德 函数名(中间下划线保留)
        ( 左括号 函数参数开始符号
        ) 右括号 函数参数结束符号
        : 冒号 代码块开始符号
        return 瑞腾 函数返回结果关键字
        Hello 哈喽 英文单词“你好”
        World 沃德 英文单词“世界”
        if 伊夫 条件判断关键字“如果”
        == 等于等于 比较运算符“等于”
        main 双下划线梅因双下划线 表示程序主入口
        run 方法名,“运行”的意思
        debug 迪ebug 调试模式(保留部分拼写)
        True 布尔值“真”

        说明:

        1. 音译优先贴近英文发音,方便记忆代码结构;
        2. 特殊符号(如@=())保留符号本身或用通俗名称标注;
        3. 下划线_、斜杠/等保留原样,避免混淆代码格式;
        4. 类名、函数名等保留核心发音特征,帮助对应代码功能。
        • @ 2025-10-3 21:17:17

          下面是对这段Flask代码的详细注释,用小学生也能理解的语言解释每一行的作用:

          # 从Flask这个工具包里,拿出"Flask"这个神奇的工具
          # 就像从工具箱里拿出锤子一样,我们需要它来搭建网站
          from flask import Flask
          
          # 创建一个Flask应用实例(就是一个网站程序的"本体")
          # __name__是Python的小魔法,表示当前这个文件的名字
          # 给网站起个"代号",方便Flask知道去哪里找东西
          app = Flask(__name__)
          
          # 定义一个"路口"(路由):当有人访问网站的首页(/就代表首页)时
          # 就会执行下面的hello_world函数,相当于"看到首页就做这件事"
          @app.route('/')
          def hello_world():
              # 这个函数的作用是:返回一句话"Hello, World!"
              # 当有人访问首页时,浏览器就会显示这句话
              return 'Hello, World!'
          
          # 这是一个判断:如果我们直接运行这个文件(而不是被其他程序调用)
          # 就执行下面的代码,启动网站
          if __name__ == '__main__':
              # 启动网站服务器,让别人可以访问你的网站
              # debug=True表示"调试模式":如果改了代码,网站会自动更新,方便我们测试
              app.run(debug=True)
          

          简单总结一下整个过程:

          1. 先"拿来"Flask工具(就像准备好积木)
          2. 用工具创建一个网站"容器"(就像搭一个空的积木房子)
          3. 告诉网站:"当有人访问首页时,就显示'Hello, World!'"(就像贴个标语在门口)
          4. 最后启动网站,让它开始工作(就像打开房子的大门,欢迎别人进来)

          运行这段代码后,在浏览器里输入http://127.0.0.1:5000,就能看到那个"Hello, World!"啦~

          • 1