一、Flask 基本介绍

Flask 是一个使用 Python 轻量级Web应用程序框架的编写。因其轻量级和灵活性,特别适用于构建小型微服务或支持高度可定制的web应用。Flask 采用了 Werkzeug WSGI 工具箱和 Jinja2 模板引擎。Flask 它被设计成易于扩展的插件,你可以自由添加任何你需要的插件来增强它的功能。

Flask 其中一个核心概念是提供尽可能简单的核心功能,同时允许开发者通过扩展来增加他们想要的功能。这个想法使 Flask 它不仅易于使用,而且在大型应用中也显示出很高的灵活性。Flask非常重视文档和社区的支持,为开发者提供了丰富的资源和指南。

Flask 安装很简单,只需使用即可。 pip 这个 Python 可轻松安装包管理器。一般情况下,开发者会在虚拟环境中安装。 Flask,为了避免不同项目之间的依赖冲突。下面是一个安装 Flask 基本示例:

 $ pip install Flask  

二、Flask 应用的结构

在 Flask 其中,基本的应用结构很简单。一个最小的 Flask 应用程序包括一个.py文件,文件中至少包含两个部分: Flask 另一个例子是至少一个路由和视图函数。一般情况下,一个 Flask 应用程序的文件结构应根据项目的大小和复杂程度进行划分,例如可以包括模板文件夹。(templates)、静态文件夹(static)以及主应用模块。

对于初学者,理解 Flask 应用程序的基本结构非常重要。学习如何组织代码,如何定义路由,如何返回响应。 Flask 关键步骤。简单 Flask 应用文件结构如下:

 / |-- app.py |-- /templates | |-- index.html |-- /static |-- /css |-- /js |-- /images  

上述结构,app.py 是主程序入口文件,templates 用来存放文件夹 HTML 模板文件,static 文件夹存放如下 CSS、JavaScript 以及图片等静态文件。根据这一结构,开发者可以扩展适合自己项目的框架。

三、Flask 路由与视图

在 Flask 中间,路由是指 URL 对视图函数进行映射。路由系统用于接收某一模式 URL,并且指向处理这个问题 URL 视图函数。使用 Flask,路由的定义非常直观,开发者只需使用装饰器 @app.route() 可以很容易地将路由绑定到相应的视图函数上。

视图函数是处理请求并返回响应的函数。 Flask 在编写视图函数时,可以访问请求数据,并且可以使用模板引擎生成动态的 HTML 文件。以下是一个简单的例子来定义单个路由和视图函数:

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

在定义路由时,可以传递额外的参数来处理不同的参数。 HTTP 提供更多路由信息的方法。举例来说,允许处理。 POST 请求路由可定义为:

 @app.route('/submit', methods=['POST']) def submit(): data = request.form.get('data') # 处理数据 return 'Data received and processed.'  

模板和静态文件

当建立一个动态网站时,通常会涉及到 HTML 使用模板和静态文件。Flask 使用 Jinja2 这使得渲染动态内容作为其模板引擎非常方便。Jinja2 开发者可以使用模板 HTML 中嵌入 Python 为了实现动态内容的生成,代码。

一般来说,你会做的 HTML 应用程序中放置模板 templates 文件夹,样式表(CSS)、JavaScript 脚本和图像等静态文件放置在静态文件中 static 文件夹中。渲染一个模板通常用于Flask应用程序。 render_template() 函数。下面是怎样的 Flask 模板和静态文件在应用中的示例:

 @app.route('/hello/<name>') def hello(name): return render_template('hello.html', name=name)  

同时,Flask 还为引用静态文件提供了方便的方法,尤其是使用。 url_for() 函数。您可以在模板中引用静态文件:

 <p><img src="{{ url_for('static', filename='images/hello.png') }}" alt="Hello Flask"></p>  

五、Flask 表单处理

Web 应用程序通常需要与用户一起收发数据,表格是完成这项任务的常用工具。Flask 在前端表单中提供接收数据的功能。 request 对象可以访问表格提交的数据。另外,为了防止跨站请求的伪造(CSRF)攻击,Flask-WTF 扩展可用于简化表单和验证工作。

在Flask应用中,处理表格的通常步骤包括定义表格类别、接收路由中的请求数据和在模板中渲染表格。这里有一个简单的 Flask 表格处理例子:

 from flask import Flask, render_template, request, redirect, url_for from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired app = Flask(__name__) app.config['SECRET_KEY'] = 'a very secret string' class MyForm(FlaskForm): name = StringField('Name', validators=[DataRequired()]) submit = SubmitField('Submit') @app.route('/form', methods=['GET', 'POST']) def form(): form = MyForm() if form.validate_on_submit(): name = form.name.data return redirect(url_for('hello', name=name)) return render_template('form.html', form=form) if __name__ == '__main__': app.run(debug=True)  

在这个例子中,首先定义了一个表单类 MyForm,它包含一个必须填写的字符串字段和一个提交按钮。然后,在 form 在视图中创建了表单的例子,并检查了表单是否有效提交,如果有效,则重定向至 hello 视图,传达用户输入的名称;否则,将重新渲染表单页面。表单页面 form.html 可以使用 Flasak-WTF 简化模板语法提供渲染。