一、flask扩展

flask扩展是指那些为Flask框架提供额外功能特性的库。这些扩展通常遵循Flask设计原则,易于集成flask应用中,并且可以大大加快开发速度
常用flask扩展
Flask-SQLAlchemy操作SQLAlchemy,它是一个强大的关系数据库框架
Flask-Migrate基于Alembic的Flask扩展用于处理SQLAlchemy数据库迁移
Flask-WTF:整合了WTForms的Flask扩展,提供表单类和验证功能
Flask-Login:提供用户会话管理处理用户登录登出记住功能
Flask-Mail:提供邮件发送支持
Flask-RESTful用于快速开发REST API的Flask扩展
Flask-HTTPAuth:用于HTTP认证简单扩展
Flask-Caching:提供缓存支持可以与多种后端如Redis、Memcached等配合使用
Flask-Session一个Flask扩展,用于服务器端会话管理
Flask-Admin:提供一个简单界面管理数据模型
Flask-SocketIO:为Flask应用添加WebSocket支持
Flask-CORS:处理跨源资源共享(CORS),使得你可以在Flask应用中轻松地处理跨域请求

二、项目配置

1. 直接配置

可以直接创建 Flask 应用实例后,通过字典方式对其进行配置

app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'your_secret_key'
2. 使用配置文件

在项目目录下创建config.py文件,将配置进行集中管理。

DEBUG = True
SECRET_KEY = 'your_secret_key'
SQLALCHEMY_DATABASE_URI = 'sqlite:///your-database.db'

然后在应用中加载此文件

import config

app = Flask(__name__)
app.config.from_object('config')
3. 使用环境变量

使用环境变量配置Flask应用,能够让你的应用根据运行环境(如开发环境测试环境和生产环境)加载不同配置,而无需更改代码。这样做有助于保护敏感信息比如数据库用户名密码,不被直接存储源代码中,同时也便于在不同环境之间迁移应用。
在Unixlike系统(包括Linux和Mac OS X)中,你可以命令行设置环境变量如下

export YOURAPPLICATION_SETTINGS=/path/to/settings.cfg

在Windows系统中,你可以使用以下命令

set YOURAPPLICATION_SETTINGS=/path/to/settings.cfg

假设setting.cfg文件内容为:

DEBUG=False
SECRET_KEY='production_secret_key'
SQLALCHEMY_DATABASE_URI='mysql://user:password@localhost/dbname'

在Flask中,你可以使用app.config.from_envvar()函数来加载一个指向配置文件的环境变量例如

app = Flask(__name__)
app.config.from_envvar('YOURAPPLICATION_SETTINGS')

当你运行你的Flask应用时,它会读取YOURAPPLICATION_SETTINGS环境变量指定配置文件,并加载其中的配置项。
在开发过程中,手动设置环境变量可能会有些不方便。为了解决这个问题,你可以使用Pythondotenv这样的库来自动地从.env文件中加载环境变量。
在.env文件中写入(.env文件的使用在flask web开发学习之初识flask(二)已提到过:

YOURAPPLICATION_SETTINGS=/path/to/settings.cfg
4. 实例文件夹

Flask允许你定义一个实例文件夹存放私密配置信息。实例文件夹通常位于应用的根路径,与 statictemplates 文件同级,并且不应该版本控制系统跟踪(如.gitignore中应包含instance/)。

app = Flask(__name__, instance_relative_config=True)
app.config.from_pyfile('config.py', silent=True)

三、flask命令

除了flask内置flask run命令我们也可以自定义命令
通过创建任意一个函数,并为其添加app.cli.command()装饰器,我们就可以注册一个flask命令

import click

@app.cli.command()
def hello():
    click.echo('Hello, zly!')

函数名称即为命令名称,这里注册的命令为hello,你可以使用flask hello命令来触发,也可以在app.cli.command()装饰器中传入参数来设置命令名称,比如传入”hello1″,就可以使用flask hello1来触发。
在这里插入图片描述

四、模版静态文件

在Flask中,模版静态文件构建动态网站的重要组成部分。它们通常用呈现内容和提供客户端所需的样式脚本
模版(Templates):
模版包含响应文本的文件,它们通常包含变量和表达式,这些变量和表达式渲染时会被实际的值替换。这样,你就可以生成动态的HTML页面,其中的内容可以根据服务器端数据来变化。

Flask默认使用Jinja2模版引擎渲染模版。Jinja2是一个强大的模版引擎,它允许你使用类似Python语法在模版中插入逻辑

模版文件通常放置在Flask项目的 templates 文件夹中。以下是一个简单的模版示例

<!-- templates/hello.html -->
<html>
<head>
    <title>Hello Template</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

这个模版中,{{ name }} 是一个变量,它将在渲染模版时被传递到模版的值所替换。在Flask视图函数中,你可以使用 render_template 函数来渲染模版,并传递需要的变量:

from flask import Flask, render_template

app = Flask(__name__)

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

静态文件(Static Files
静态文件包括通常不会改变的文件,如CSS样式表、JavaScript脚本图片等。这些文件直接由浏览器请求和加载,不需要经过服务器端处理
在Flask项目中,静态文件默认放在 static 文件夹中。

在HTML模版中引用这个静态文件,你可以使用Jinja2提供的 url_for 函数:

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

这里url_for(‘static’, filename=‘style.css’) 调用生成指向静态文件 style.css 的URL。

五、flask和mvc架构

Flask是一个轻量级的Web应用框架,它提供了构建Web应用所需的基本工具功能。虽然Flask本身并不强制使用任何特定的架构模式,但它非常灵活,可以很容易地用来实现MVC(Model-View-Controller)架构模式

mvc架构中,程序分为三个组件数据处理(Model),用户界面(View),交互逻辑(Controller)。

严格来说,flask并不是mvc架构的框架,因为他没有内置数据模型支持。在flask中,我们可以这样实现mvc框架模板文件=>View,视图函数=>Controller,ORM工具定义数据模型=>Model。

原文地址:https://blog.csdn.net/qq_42369064/article/details/134793908

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_42498.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注