百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Flask 入门教程(flask讲解)

off999 2025-04-07 17:51 38 浏览 0 评论

目录

  1. 什么是Flask?
  2. 环境配置与安装
  3. 第一个Flask应用:Hello World
  4. 路由与视图函数
  5. 模板与Jinja2
  6. 表单处理与用户输入
  7. 数据库集成(SQLite + SQLAlchemy)
  8. 错误处理与调试
  9. 完整示例:待办事项应用
  10. 下一步学习建议

1. 什么是Flask?

  • Flask 是一个轻量级的Python Web框架,基于Werkzeug WSGI工具包和Jinja2模板引擎,适合快速开发小型到中型的Web应用。

核心特点

  • 简单易学:代码简洁,文档清晰。
  • 灵活可扩展:通过插件支持数据库、表单验证、用户认证等功能。
  • RESTful友好:天然支持构建API。
  • 开发友好:内置调试模式,支持热重载。

2. 环境配置与安装

步骤详解:

  1. 安装Python
  • 推荐使用Python 3.8+,可访问Python官网下载安装。
  • 验证安装:
python --version # 输出应为3.8+
  1. 创建虚拟环境(必做)
  • 作用:隔离项目依赖,避免版本冲突。
  • 操作
# 创建虚拟环境 
python -m venv flask_env 
# 激活虚拟环境
source flask_env/bin/activate # Linux/MacOS 
.\flask_env\Scripts\activate # Windows(PowerShell)
  1. 安装Flask
pip install Flask

3. 第一个Flask应用:Hello World

完整代码示例:

from flask import Flask
app = Flask(__name__)

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

if __name__ == '__main__':
    app.run(debug=True)  # 启用调试模式

运行与验证:

  1. 保存文件为 app.py。
  2. 在终端运行:
python app.py
  1. 访问 http://127.0.0.1:5000/,页面显示 "Hello World!"。

关键点解释:

  • Flask(__name__):创建应用实例,__name__用于确定资源路径。
  • @app.route('/'):装饰器将URL路径/绑定到视图函数hello。
  • debug=True:开启调试模式,修改代码后自动重启服务,并在浏览器显示错误详情。

4. 路由与视图函数

核心概念:

  • 路由:URL路径与视图函数的映射。
  • 视图函数:接收请求并返回响应(字符串、HTML、JSON等)。

动态路由示例:

@app.route('/user/')
def show_user(username):
    return f'User: {username}'

@app.route('/post/')
def show_post(post_id):
    return f'Post ID: {post_id}'

路由参数类型:

类型

说明

示例

string

默认类型(不含斜杠)

/user/

int

整数

/post/

float

浮点数

/price/

path

包含斜杠的字符串

/path/

5. 模板与Jinja2

为什么需要模板?

  • 分离逻辑与表现:将HTML与Python代码解耦。
  • 动态渲染:通过变量、循环、条件生成页面。

使用步骤:

  1. 创建模板目录
    项目根目录下新建 templates 文件夹(Flask默认查找此目录)。
  2. 编写基础模板(templates/base.html)



    {% block title %}{% endblock %}


    {% block content %}{% endblock %}

  1. 子模板继承(templates/index.html)
{% extends "base.html" %}
{% block title %}Home{% endblock %}
{% block content %}
  

{{ message }}

    {% for item in items %}
  • {{ item }}
  • {% endfor %}
{% endblock %}
  1. 视图函数渲染
from flask import render_template

@app.route('/')
def index():
    return render_template('index.html', 
                         message='Welcome!',
                         items=['Apple', 'Banana', 'Cherry'])

6. 表单处理与用户输入

安全提示:

  • 启用CSRF保护:生产环境中需使用Flask-WTF扩展,此处为简化示例。

表单处理示例:

  1. HTML表单(templates/form.html)
  1. 视图函数处理
from flask import request, redirect

@app.route('/form')
def show_form():
    return render_template('form.html')

@app.route('/submit', methods=['POST'])
def submit():
    username = request.form.get('username')
    email = request.form.get('email')
    # 此处应添加数据验证逻辑
    return redirect(f'/user/{username}')

7. 数据库集成(SQLite + SQLAlchemy)

使用Flask-SQLAlchemy简化操作:

  1. 安装扩展
pip install flask-sqlalchemy
  1. 配置数据库(app.py)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
  1. 定义数据模型
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}')"
  1. 初始化数据库
# 在Python交互环境中执行
from app import db
db.create_all()
  1. CRUD操作示例
# 创建用户
new_user = User(username='john', email='john@example.com')
db.session.add(new_user)
db.session.commit()

# 查询用户
user = User.query.filter_by(username='john').first()

# 删除用户
db.session.delete(user)
db.session.commit()

8. 错误处理与调试

自定义错误页面:

@app.errorhandler(404)
def page_not_found(error):
    return render_template('404.html'), 404

调试模式的高级用法:

  • 开启调试器:浏览器中直接调试代码(仅限开发环境)。
  • 日志记录
import logging 
logging.basicConfig( 
    level=logging.DEBUG, 
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' )

9. 完整示例:待办事项应用(优化版)

代码结构:

todo-app/
├── app.py
├── templates/
│   ├── base.html
│   ├── index.html
│   └── 404.html
└── site.db

关键代码:

app.py

from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)

class Todo(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.String(200), nullable=False)
    completed = db.Column(db.Boolean, default=False)

@app.route('/')
def index():
    todos = Todo.query.all()
    return render_template('index.html', todos=todos)

@app.route('/add', methods=['POST'])
def add():
    content = request.form.get('content')
    if content:
        new_todo = Todo(content=content)
        db.session.add(new_todo)
        db.session.commit()
    return redirect(url_for('index'))

@app.route('/delete/')
def delete(id):
    todo = Todo.query.get_or_404(id)
    db.session.delete(todo)
    db.session.commit()
    return redirect(url_for('index'))

if __name__ == '__main__':
    with app.app_context():
        db.create_all()  # 自动创建数据库表
    app.run(debug=True)

templates/index.html

{% extends "base.html" %}
{% block title %}Todo List{% endblock %}
{% block content %}
  

Todo List

    {% for todo in todos %}
  • {% if todo.completed %}{% endif %} {{ todo.content }} {% if todo.completed %}{% endif %} Delete
  • {% endfor %}
{% endblock %}

10. 下一步学习建议

  1. 扩展功能
  • 用户认证:使用Flask-Login管理用户会话。
  • 表单验证:通过Flask-WTF添加CSRF保护和表单验证。
  • 前端增强:集成Bootstrap或JavaScript框架(如Vue.js)。
  1. 部署实践
  • 使用Gunicorn + Nginx部署到Linux服务器。
  • 尝试云平台部署(如Heroku、AWS EC2)。
  1. 深入学习
  • 阅读Flask官方文档
  • 学习REST API开发(Flask-RESTful扩展)
  • 探索大型项目结构(蓝图、工厂模式)

通过本教程,你已掌握Flask的核心功能,包括路由、模板、数据库操作和错误处理。接下来,尝试为你的应用添加更多功能,并探索Flask生态系统的强大扩展能力!

相关推荐

安全教育登录入口平台(安全教育登录入口平台官网)

122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...

大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)

大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...

谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)

要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...

2026-02-04 09:03 off999

电信宽带测速官网入口(电信宽带测速官网入口app)

这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...

植物大战僵尸95版手机下载(植物大战僵尸95 版下载)

1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...

免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)

1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...

2025世界杯赛程表(2025世界杯在哪个国家)

2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...

下载搜狐视频电视剧(搜狐电视剧下载安装)

搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...

pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
永久免费听歌网站(丫丫音乐网)

可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...

音乐格式转换mp3软件(音乐格式转换器免费版)

有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...

电子书txt下载(免费的最全的小说阅读器)

1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...

最好免费观看高清电影(播放免费的最好看的电影)

在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...

孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)

要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...

取消回复欢迎 发表评论: