学习笔记 - Flask - 01

前言

4月就要待业家中,经过一两天的踌躇,觉着这其实是一个蛮好的学习与重新调整的机会,后面学习是不会有人提供薪水了,那自然可以更自由些。不过漫无目的的学习的效率比较低,可以根据BOSS上的岗位的关键词去了解相关的技术。

自己喜欢折腾,对Python也蛮有兴趣,先学习下Flask

安装

1
pip3 install Flask

如果遇到网的问题,可以Google搜索pip 换源,现在安装一些工具确实是没有什么门槛

显示下安装后的效果

1
pip3 show Flask

2025-03-27 11.59.35.png

IDE安装

Trae 编辑器
另外我们也可以下载本地的开发环境 Trae,Trae 是字节跳动推出的一款面向开发者的 AI 驱动的集成开发环境(IDE)。

访问 Trae 官网 https://www.trae.com.cn
默认情况,下载按钮会自动匹配我们的电脑系统,我们也可以找到适合自己电脑操作系统的 Trae 安装包,进行下载。

Hello world

AI 自动补齐

1
2
3
4
5
6
7
8
from flask import Flask

app = Flask(__name__)
@app.route('/')
def index():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)

起个本地服务

1
python app.py

Flask 基本概念

这部分照搬原文,概念上的东西大同小异,主要看下语法

  • 路由: URL 到 Python 函数的映射
  • 视图函数: 处理请求并返回响应的 Python 函数
  • 请求对象: 包含了客户端发送的请求信息,如请求方法、URL、请求头、表单数据等
  • 响应对象: 包含了发送给客户端的响应信息,如状态码、响应头、响应体等
  • 模板:Flask 使用 Jinja2 模板引擎来渲染 HTML 模板。模板允许你将 Python 代码嵌入到 HTML 中,从而动态生成网页。
  • 应用工厂:应用工厂是一个 Python 函数,它创建并返回一个 Flask 应用实例。这允许你配置和初始化你的应用,并且可以创建多个应用实例。
  • 配置对象:Flask 应用有一个配置对象,你可以使用它来设置各种配置选项,如数据库连接字符串、调试模式等。
  • 蓝图:蓝图是 Flask 中的一个组织代码的方式,它允许你将相关的视图函数、模板和静态文件组织在一起,并且可以在多个应用中重用。
  • 静态文件:静态文件是不会被服务器端执行的文件,如 CSS、JavaScript 和图片文件。Flask 提供了一个简单的方法来服务这些文件。
  • 扩展:Flask 有许多扩展,可以添加额外的功能,如数据库集成、表单验证、用户认证等。
  • 会话:Flask 使用客户端会话来存储用户信息,这允许你在用户浏览你的应用时记住他们的状态。
  • 错误处理:Flask 允许你定义错误处理函数,当特定的错误发生时,这些函数会被调用。

路由 (Routing)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from flask import Flask

app = Flask(__name__)
@app.route('/')
def index():
return 'Hello, World!'

@app.route('/router/about')
def about():
return 'About Page'

@app.route('/router/contact')
def contact():
return 'Contact Page'

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

2025-03-27 16.38.55.png

视图函数 (View Functions)

1
2
3
@app.route('/greet/<name>')
def greet(name):
return f'Hello, {name}!'

greet 就是视图函数

2025-03-27 16.42.50.png

请求对象 (Request Object)

1
2
3
4
5
6
from flask import request

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

要有个提交表单的操作才能串起来,看下面涉及到flask里python和html混合的处理逻辑

响应对象 (Response Object)

响应对象包含了发送给客户端的响应信息,包括状态码、响应头和响应体。Flask 默认会将字符串、HTML 直接作为响应体。

1
2
3
4
5
6
7
8
from flask import make_response

@app.route('/custom_response')
def custom_response():
# make_response 创建个响应对象,然后填充请求头
response = make_response('This is a custom response!')
response.headers['X-Custom-Header'] = 'Value'
return response

模板 (Templates)

Flask 使用 Jinja2 模板引擎来渲染 HTML 模板。模板允许你将 Python 代码嵌入到 HTML 中,从而动态生成网页内容。

1
2
3
4
5
from flask import render_template

@app.route('/render/<name>')
def render(name):
return render_template('render_name.html', name=name)
1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html>
<head>
<title>Hello</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>

直接访问 http://127.0.0.1:5000/render/Wang 报找不到模板

2025-03-27 17.00.23.png

看了下模板文件要放在templates 目录下,新建后,将render_name.html移动到该目录下,重新刷新页面,正常显示

2025-03-27 17.01.18.png

应用工厂 (Application Factory)

应用工厂是一个 Python 函数,用于创建和配置 Flask 应用实例。这种方法允许你创建多个应用实例,或者在不同配置下初始化应用。

1
2
3
4
5
6
7
8
9
10
from flask import Flask

def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config_name)

from . import routes
app.register_blueprint(routes.bp)

return app

应该是针对不同环境

配置对象 (Configuration Objects)

配置对象用于设置应用的各种配置选项,如数据库连接字符串、调试模式等。可以通过直接设置或加载配置文件来配置 Flask 应用。

1
2
3
4
class Config:
DEBUG = True
SECRET_KEY = 'mysecretkey'
SQLALCHEMY_DATABASE_URI = 'sqlite:///mydatabase.db'

蓝图 (Blueprints)

蓝图是 Flask 中的组织代码的方式。它允许你将相关的视图函数、模板和静态文件组织在一起,并且可以在多个应用中重用。

1
2
3
4
5
6
7
from flask import Blueprint

bp = Blueprint('main', __name__)

@bp.route('/')
def home():
return 'Home Page'

注册蓝图 (app/__init__.py):

1
2
3
4
5
6
7
from flask import Flask
from .routes import bp as main_bp

def create_app():
app = Flask(__name__)
app.register_blueprint(main_bp)
return app

静态文件 (Static Files)

静态文件是不会被服务器端执行的文件,如 CSS、JavaScript 和图片文件。Flask 提供了一个简单的方法来服务这些文件。

1
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">

静态文件目录:将静态文件放在 static 文件夹中,Flask 会自动提供服务。

扩展 (Extensions)

Flask 有许多扩展,可以添加额外的功能,如数据库集成、表单验证、用户认证等。这些扩展提供了更高级的功能和第三方集成。

1
2
3
4
from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydatabase.db'
db = SQLAlchemy(app)

会话 (Sessions)

Flask 使用客户端会话来存储用户信息,以便在用户浏览应用时记住他们的状态。会话数据存储在客户端的 cookie 中,并在服务器端进行签名和加密。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from flask import session

# 自动生成的密钥
app.secret_key = 'your_secret_key_here'

@app.route('/set_session/<username>')
def set_session(username):
session['username'] = username
return f'Session set for {username}'

@app.route('/get_session')
def get_session():
username = session.get('username')
return f'Hello, {username}!' if username else 'No session data'

错误处理 (Error Handling)

Flask 允许你定义错误处理函数,当特定的错误发生时,这些函数会被调用。可以自定义错误页面或处理逻辑。

1
2
3
4
5
6
7
@app.errorhandler(404)
def page_not_found(e):
return 'Page not found', 404

@app.errorhandler(500)
def internal_server_error(e):
return 'Internal server error', 500

2025-03-27 17.17.56.png

参考

Flask 教程

Windows与Mac端数据共享 hexo deploy 命令执行失败
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×