avatar

AngYi

Aim for the stars, and beyond.

  • 首页
  • 分类
  • 标签
  • 归档
  • 相册
  • 关于我
Home 【Flask开发】1. 安装与配置
文章

【Flask开发】1. 安装与配置

Posted 2021-12-8 Updated 2023-10- 17
By AngYi
16~21 min read

介绍

Flask

Flask是一个使用Python编写的轻量级 Web 应用框架。其WSGI工具箱采用 Werkzeug ,模板引擎则使用 Jinja2。

Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。

之所以说Flask是微框架,因为它仅仅实现了Web应用的核心功能:Flask由两个主要依赖组成(提供路由、调试和Web服务器网关接口的Werkzeug和提供模板的Jinja2)。其他的一切(比如数据库集成,表单处理,文件上传,用户认证)都由第三方库来完成,如果插件满足不了你的需求,你也可以自行开发。

安装

pip install Flask

目录管理

官方文档推荐使用的目录结构:

/home/user/FlaskProject/
├── apps /蓝图
│   ├── __init__.py / 这里创建app对象函数,并注册蓝图
│   ├── user
│   │       ├── __init__.py
│   │       ├── model.py
│   │       ├── view.py
│   ├── article
│   ├── auth.py
│   ├── blog.py
├── templates/ 模板文件
│   ├── base.html
│   ├── auth/
│   │   ├── login.html
│   │   └── register.html
│   └── blog/
│       ├── create.html
│       ├── index.html
│       └── update.html
├── static/ 静态文件
│    └── style.css

├── setup.py
└── app.py  //调用app创建函数,使用flask script 和 Migrate 管理app

├── tests/
│   ├── conftest.py
│   ├── data.sql
│   ├── test_factory.py
│   ├── test_db.py
│   ├── test_auth.py
│   └── test_blog.py
├── venv/

作为一个项目开发者,良好的项目目录结构管理习惯一定要有。
python推荐使用packages来组织管理大型项目,这里练习也一定要跟上规范。

  • flaskr, a Python package containing your application code and files.
  • tests/, a directory containing test modules.
  • venv/, a Python virtual environment where Flask and other dependencies are installed.
  • setup.py Installation files telling Python how to install your project.
  • .gitignore Version control config, such as Git. You should make a habit of using some type of version control for all your projects, no matter the size.

.gitignore 一些不需要git版本管理的文件和目录

venv/

*.pyc
__pycache__/

instance/

.pytest_cache/
.coverage
htmlcov/

dist/
build/
*.egg-info/

Hello World

# hello.py 
from flask import Flask
app = Flask(__name__)


@app.route('/') # 路由
def sayhello():
    return "Flask Here!"

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

必须在项目中导入Flask模块。Flask类的一个对象是我们的WSGI应用程序。
Flask构造函数使用**当前模块(__name __)的名称作为参数。
Flask类的
route()**函数是一个装饰器,它告诉应用程序哪个URL应该调用相关的函数。

(base) root@3f4f62e00e25:/home/ay/Flask# /opt/conda/bin/python /home/ay/Flask/app/hello.py
 * Serving Flask app "hello" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

在最新的flask版本中建议使用如下启动方式

(base) ➜  FlaskE git:(master) ✗ export FLASK_APP=Hello.py    
(base) ➜  FlaskE git:(master) ✗ flask run    

调试器

报错信息显示到前端页面。

export FLASK_DEBUG=1

程序加载配置

在 Flask 程序运行的时候,可以给 Flask 设置相关配置,比如:配置 Debug 模式,配置数据库连接地址等等,设置 Flask 配置有以下三种方式:

  1. 从配置对象中加载(常用)
    app.config.from_object()

  2. 从配置文件中加载
    app.config.from_pyfile()

  3. 从环境变量中加载(了解)
    app.config.from_envvar()

    以下演练以设置应用程序的 DEBUG(调试模式) 为例,设置应用为调式模式这后,可以实现以下功能:
    程序代码修改后可以自动重启服务器
    在服务器出现相关错误的时候可以直接将错误信息进行抛出到控制台打印

使用方式

1. 从配置对象中加载,创建配置的类

配置对象,里面定义需要给 APP 添加的一系列配置

class Config(object):
  '''
  所有的配置项目都需要大写
  '''
  SECRET_KEY=	"sdfadsfaskdfoiquwrei"
  DEBUG = True
  
#	设置配置类
app.config.from_object(Config)
# 读取 打印
@app.route("/")
def index():
    print(app.config['SECRET_KEY'])
    return "Hello world!"
2. 从配置文件中加载配置

app.config.from_pyfile('config.py')

3. 环境变量(了解)
export 变量名=变量值
echo $变量名

app.config.from_envvar('FLASKCONFIG')
读取配置app.config.get()
在视图函数中使用 current_app.config.get()

4. app.run的参数

可以指定运行的主机IP地址,端口,是否开启调试模式

app.run(host="0.0.0.0", port=5000, debug = True)

新式的Flask运行方式

(venv) ➜  Flask export FLASK_APP=HelloWorld
(venv) ➜  Flask flask run
 * Serving Flask app 'HelloWorld' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)                                                                                                                                   (venv) ➜  Flask export FLASK_ENV=development 
(venv) ➜  Flask flask run
 * Serving Flask app 'HelloWorld' (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 698-047-949

Flask_Script

Flask插件,可以自定义脚本,主要功能是添加命令行参数。

https://flask-script.readthedocs.io/en/latest/

  • 安装
    • pip install flask_scripts
  • 初始化
    • 使用app构建Manager对象
  • 调用
    • runserver
      • -d //debuge
      • -r //reload
      • -p //port
      • -h //host
      • --threaded
    • shell
from flask_script import Manager
from apps import create_app

app = create_app() 
manager = Manager(app) # 给app套了一个壳子

if __name__=='__main__':
    manager.run()

命令启动方式

python app.py runserver --help

python app.py runserver -h 0.0.0.0 -p 8888 -d
开发学习
flask
License:  CC BY 4.0
Share

Further Reading

Dec 11, 2024

我有自己的摄影网站啦

利用周末的时间,搞了一个网站,用来展示一些我的摄影作品。 点击博客左侧的[相册](AngYi’s Gallery)链接就是啦~ github 代码仓库的地址: https://github.com/Flionay/Dash_Photo_Gallery 项目简介 **Dash Photo Galler

Oct 23, 2024

Dash 进阶技巧

使用外部图标 费老的feffery-antd-components方法 20230619-在dash应用中使用fontawesome外部图标 第一步:在 https://fontawesome.com/download 中选择“free for web”资源进行下载 第二步:解压下载内容后,将其中的

May 16, 2022

利用FastAPI和Docker部署机器学习应用

Pexels 上的 Tom Fisk 拍摄的图片作为一名数据科学家,训练您的机器学习模型只是为客户提供解决方案的一部分。 除了生成和清理数据、选择和调整算法之外,您还需要交付和部署结果,以便在生产中使用。 这本身就是一个庞大的领域,具有不断发展的工具和标准。 在这篇文章中,我的目标是提供一份实用指南

OLDER

周末写了一个疫情可视化的项目

NEWER

【Flask开发】 2. 路由与蓝图

Recently Updated

  • DeepSeek 创始人梁文峰采访:创新、人才与中国 AI 发展
  • 福州-厦门之行
  • 我有自己的摄影网站啦
  • 借助Ollama一键本地部署CodeGeex,让AI帮你打工
  • Dash 进阶技巧

Trending Tags

ssh linux matlab 感悟 读书 blog git python flask ML

Contents

©2025 AngYi. Some rights reserved.

Using the Halo theme Chirpy