第一个Flask项目

简介: 第一个Flask项目,本文适合有一定前端、Python、网路基础的同学阅读。

第一个Flask项目

flask3.png

本文适合有一定前端、Python、网路基础的同学阅读。

1、安装环境

创建虚拟环境

mkvirtualenv flask

安装Flask

pip install flask

查看虚拟环境

workon

进入虚拟环境

workon flask_env

列出当前虚拟环境安装的库

pip list

在这里插入图片描述

2、创建项目

在这里插入图片描述
在这里插入图片描述
app.py

rom flask import Flask

app = Flask(__name__)  # 初始化 Flask项目的服务


@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


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

3、启动程序

方式一:pycharm run
在这里插入图片描述
方式二 :terminal python app.py
在这里插入图片描述

方式三 进入目录 python app.py
在这里插入图片描述
方式四 设置环境变量 set FLASK_APP = app.py
flask run
在这里插入图片描述
Ctrl C 关闭程序

4、访问项目

在这里插入图片描述

5、参数说明

文件:app.py

rom flask import Flask

app = Flask(__name__)  # 初始化 Flask项目的服务


@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


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

接下来就来详细查看一下 Flask 应用程序在创建的时候一些需要我们关注的参数

def __init__(
        self,
        import_name: str,
        static_url_path: t.Optional[str] = None,
        static_folder: t.Optional[t.Union[str, os.PathLike]] = "static",
        static_host: t.Optional[str] = None,
        host_matching: bool = False,
        subdomain_matching: bool = False,
        template_folder: t.Optional[str] = "templates",
        instance_path: t.Optional[str] = None,
        instance_relative_config: bool = False,
        root_path: t.Optional[str] = None,
    ):
import_name:str,
当前Flask程序所在的包(模块)名字,传 __name__ 就可以 其可以决定 Flask 在访问静态文件时查找的路径

static_url_path: t.Optional[str] = None,
静态文件访问路径,可以不传,默认为:/ + static_folder

static_folder: t.Optional[t.Union[str, os.PathLike]] = "static",
静态文件存储的文件夹,可以不传,默认为 static

template_folder: t.Optional[str] = "templates",
模板文件存储的文件夹,可以不传,默认为 templates

默认参数情况下

app = Flask(__name__)
|---static
        |--- 1.png
|---templates
        |--- index.html
|---helloword.py
访问127.0.0.1:5000:static/1.png

修改参数的情况下

from flask import Flask

app = Flask(__name__, static_url_path='/Flyme awei', static_folder='static')  # 初始化 Flask项目的服务


@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


if __name__ == '__main__':
    # IP:0.0.0.0 代表当前计算机所有的IP地址,
    # port:端口默认是 5000
    # flask的debug模式:把错误信息显示到页面中
    app.run(host='0.0.0.0', port=5000, debug=True)

debug源文件
在这里插入图片描述

app = Flask(__name__, static_url_path='/Flyme awei',static_folder='static')
----
|---folder_param # 此处目录名变化 | 
|--- 1.png 
|---helloworld.py 

访问127.0.0.1:5000/static_url_path/1.png才可以访问到图片

在这里插入图片描述

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

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

IP:0.0.0.0 代表当前计算机所有的IP地址

关于DEBUG调试模式
在这里插入图片描述

1.程序代码修改后可以自动重启服务器
2.在服务器出现相关错误的时候可以直接将错误信息返回到前端进行展示
在这里插入图片描述

6、应用程序配置参数

应用程序配置参数设置的是一个Web应用工程的相关信息,比如:

  • 数据库的连接信息
  • 日志的配置信息
  • 自定义的配置信息
  • ...

注意:这样可以集中管理项目的所有配置信息
Flask将配置信息保存到了app.config属性中,该属性可以按照字典类型进行操作。

1.从配置对象中加载

app.config.from_object(DefaultConfig)
# -*- coding: utf-8 -*-
# @File  : 02应用程序参数.py
# @author: Flyme awei 
# @email : 1071505897@qq.com
# @Time  : 2022/7/26 0:25


from flask import Flask


class DefaultConfig(object):
    """默认Web项目配置"""
    USER = 'Flyme awei'
    PWD = 'root'


app = Flask(__name__)
app.config.from_object(DefaultConfig)


@app.route('/')
def index():
    print(app.config['USER'])
    print(app.config["PWD"])
    return "hello word!"


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

在这里插入图片描述
这样的好处是可以在项目开发中来继承和重写:

class MyDevelopmentConfig(DefaultConfig): 
    DEBUG=True

2.从配置文件中加载

新建一个配置文件setting.py ,这个文件中的内容是: 参数名=参数值 ,比如:PWD = 'root'

app.config.from_pyfile('setting.py')
# -*- coding: utf-8 -*-
# @File  : setting.py.py
# @author: Flyme awei 
# @email : 1071505897@qq.com
# @Time  : 2022/7/26 0:38


# Web 项目的整个配置文件
USER = 'Flyme awei'
PWD = 'root'
# -*- coding: utf-8 -*-
# @File  : 02从配置对象中加载.py
# @author: Flyme awei 
# @email : 1071505897@qq.com
# @Time  : 2022/7/26 0:25


from flask import Flask


app = Flask(__name__)
app.config.from_pyfile('setting.py')


@app.route('/')
def index():
    print(app.config['USER'])
    print(app.config["PWD"])
    return "hello word!"


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

在这里插入图片描述

3.从环境变量中加载

先配置环境变量
在这里插入图片描述

在这里插入图片描述

Flask使用环境变量加载配置的本质是通过环境变量值找到配置文件,再读取配置文件的信息,其使用方式为

app.config.from_envvar('环境变量名')

环境变量的值为配置文件的绝对路径
先在终端中执行如下命令

export PROJECT_SETTING='~/setting.py'
# -*- coding: utf-8 -*-
# @File  : 04从环境变量中加载.py
# @author: Flyme awei 
# @email : 1071505897@qq.com
# @Time  : 2022/7/26 0:50


from flask import Flask


app = Flask(__name__)


app.config.from_envvar('SETTING_PATH', silent=True)


@app.route('/')
def hello_word():
    print(app.config['USER'])
    print(app.config['PWD'])
    return 'hello word'


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

silent参数:
False 表示不安静的处理,没有值时报错通知,默认为False
True 表示安静的处理,即时没有值也让Flask正常的运行下去

4.从Pycharm中的运行时设置环境变量的方式加载

使用非常少
在这里插入图片描述在这里插入图片描述

5.企业项目开发常用的方式

使用工厂模式创建Flask app,并结合使用配置对象与环境变量加载配置

  • 使用配置对象加载默认配置
  • 使用环境变量加载不想出现在代码中的敏感配置信息
def create_flask_app(config): 
    """ 创建Flask应用 :param config: 配置对象 :return: Flask应用 """ 
    app = Flask(__name__) 
    app.config.from_object(config)

    # 从环境变量指向的配置文件中读取的配置信息会覆盖掉从配置对象中加载的同名参数
    app.config.from_envvar("PROJECT_SETTING", silent=True) 
    return app 


class DefaultConfig(object): 
    """默认配置""" 
    USER = 'ROOT' 


class DevelopmentConfig(DefaultConfig): 
    DEBUG=True 


# app = create_flask_app(DefaultConfig)
app = create_flask_app(DevelopmentConfig) 


@app.route("/") 
def index(): 
    print(app.config['USER']) 
    return "hello world"

相关文章
|
17天前
|
缓存 前端开发 JavaScript
flask各种版本的项目,终端命令运行方式的实现
flask各种版本的项目,终端命令运行方式的实现
|
3月前
|
数据可视化 API 开发者
通俗易懂:一步步教你 Flask 项目自动生成 API 文档
Flasgger,作为一款强大的 Flask 扩展,自动从 Flask 应用中提取并生成 OpenAPI 规范文档,配备 SwaggerUI,为开发者提供了一条快捷通道,让 API 的文档编制和交互式测试变得简单易行。Flasgger 的设计原则是简化开发流程,通过与 Flask 框架的无缝整合,让开发者可以更专注于应用逻辑的构建。
|
6月前
|
前端开发 JavaScript Python
flask 项目目录结构
flask 项目目录结构
93 0
|
8月前
|
存储 前端开发 NoSQL
项目阶段之flask(三)
项目阶段之flask(三)
|
5月前
|
前端开发 JavaScript 数据库
Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求(2)
9.8 收藏图片 前面已经学习过如何使用关联表来表示多对多关系,缺点是只能表示关系,不能存储数据(如我还想记录下收藏图片的时间戳)。这种情况下,我们可以使用关联模型来表示多对多关系。 在关联模型中,我们将Photo模型与User模型的多对多关系,分离成了User模型和Collect模型的一对多关系,和Photo模型与Collect模型的一对多关系。
82 0
|
21天前
|
开发者 索引 Python
Flask环境搭建与项目初始化
【4月更文挑战第15天】本文指导如何搭建Flask开发环境并初始化项目。首先确保安装Python,然后通过pip安装Flask。创建名为`myflaskapp`的项目目录,包含`app.py`入口文件。在`app.py`中初始化Flask应用,定义路由和视图函数。运行`python app.py`启动开发服务器,访问`http://127.0.0.1:5000/`查看结果。完成基本设置后,可按需求扩展应用功能。
|
27天前
|
Python
通过命令行的方式快速创建一个flask项目
通过命令行的方式快速创建一个flask项目
20 0
|
5月前
|
存储 前端开发 JavaScript
Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求(1)
9 图片社交网站 本章新涉及的Python包:Flask-Dropzone, Pillow, Flask-Avatars, Whoosh, Flask-Whooshee。 9.1 项目组织架构 1、功能式架构
60 0
|
10月前
|
SQL 关系型数据库 MySQL
【Flask】Flask项目sqlite数据库操作(代码实现)
Flask项目sqlite数据库操作(代码实现)
|
8月前
|
Python
项目阶段之flask(六)
项目阶段之flask(六)