当前位置:实例文章 » 其他实例» [文章]Flask学习笔记(三)

Flask学习笔记(三)

发布人:shili8 发布时间:2024-11-07 03:37 阅读次数:0

**Flask 学习笔记(三)**

在前两篇文章中,我们已经了解了 Flask 的基本概念、路由、请求和响应等。今天我们将继续深入探讨 Flask 的更多特性,包括模板、数据库操作、错误处理和安全性。

### 一、模板Flask 提供了一个强大的模板系统,可以帮助你渲染 HTML 模板并填充数据。Flask 使用 Jinja2 作为其模板引擎。

####1. 安装 Jinja2首先,我们需要安装 Jinja2 库:

bashpip install Flask-Jinja2

####2. 创建模板创建一个名为 `templates` 的目录,并在其中创建一个名为 `index.html` 的 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>Document</title>
</head>
<body>
 <h1>Hello, {{ name }}!</h1>
</body>
</html>

####3. 渲染模板在 Flask 应用中,使用 `render_template` 函数渲染模板:
from flask import Flask, render_templateapp = Flask(__name__)

@app.route("/")
def index():
 name = "John"
 return render_template("index.html", name=name)

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

在上面的例子中,我们使用 `render_template` 函数渲染 `index.html` 模板,并传递 `name` 变量给模板。

### 二、数据库操作Flask 提供了一个强大的 ORM(Object-Relational Mapping)系统,称为 Flask-SQLAlchemy。它可以帮助你与数据库进行交互。

####1. 安装 Flask-SQLAlchemy首先,我们需要安装 Flask-SQLAlchemy 库:
bashpip install flask-sqlalchemy

####2. 创建数据库模型创建一个名为 `models.py` 的 Python 文件,并在其中定义你的数据库模型:
from flask_sqlalchemy import SQLAlchemydb = SQLAlchemy(app)

class User(db.Model):
 id = db.Column(db.Integer, primary_key=True)
 name = db.Column(db.String(100), nullable=False)
 email = db.Column(db.String(100), unique=True, nullable=False)

 def __repr__(self):
 return f"User('{self.name}', '{self.email}')"

在上面的例子中,我们定义了一个 `User` 模型,包含 `id`、`name` 和 `email` 三个字段。

####3. 使用数据库模型使用 `db.session` 对象来进行 CRUD(Create, Read, Update, Delete)操作:
from models import User@app.route("/users", methods=["GET"])
def get_users():
 users = User.query.all()
 return jsonify([user.name for user in users])

@app.route("/users/<int:user_id>", methods=["GET"])
def get_user(user_id):
 user = User.query.get_or_404(user_id)
 return jsonify({"name": user.name, "email": user.email})

@app.route("/users", methods=["POST"])
def create_user():
 data = request.json user = User(name=data["name"], email=data["email"])
 db.session.add(user)
 db.session.commit()
 return jsonify({"message": "User created successfully!"})

在上面的例子中,我们使用 `db.session` 对象来进行 CRUD 操作。

### 三、错误处理Flask 提供了一个强大的错误处理系统,可以帮助你捕捉和处理异常。

####1. 定义错误类定义一个名为 `errors.py` 的 Python 文件,并在其中定义你的错误类:
class InvalidUsage(Exception):
 def __init__(self, message, status_code=400):
 self.message = message self.status_code = status_code

####2. 使用错误类使用 `raise` 关键字来抛出异常:
from errors import InvalidUsage@app.route("/users", methods=["GET"])
def get_users():
 try:
 users = User.query.all()
 return jsonify([user.name for user in users])
 except Exception as e:
 raise InvalidUsage("Error occurred: {}".format(e))

在上面的例子中,我们使用 `raise` 关键字来抛出异常。

### 四、安全性Flask 提供了一个强大的安全性系统,可以帮助你保护你的应用免受攻击。

####1. 使用 CSRF 保护使用 `csrf_token` 函数来生成 CSRF token:
from flask import csrf@app.route("/users", methods=["POST"])
def create_user():
 data = request.json if request.method == "POST":
 csrf_token = csrf.generate_csrf_token()
 return jsonify({"message": "User created successfully!", "csrf_token": csrf_token})

在上面的例子中,我们使用 `csrf_token` 函数来生成 CSRF token。

####2. 使用 SSL/TLS使用 `ssl_context` 参数来启用 SSL/TLS:
from flask import Flask, ssl_contextapp = Flask(__name__)

@app.route("/")
def index():
 return "Hello, World!"

if __name__ == "__main__":
 app.run(debug=True, host="localhost", port=5000, ssl_context=("cert.pem", "key.pem"))

在上面的例子中,我们使用 `ssl_context` 参数来启用 SSL/TLS。

### 总结Flask 是一个强大的 Web 框架,可以帮助你快速构建和部署你的应用。通过学习 Flask 的模板、数据库操作、错误处理和安全性等特性,你可以更好地保护你的应用免受攻击,并提供更好的用户体验。

其他信息

其他资源

Top