Flask笔记一之项目搭建、配置项导入

本文首发于公众号:Hunter后端

原文链接:Flask笔记一之项目搭建、配置项导入

这一篇开始介绍 Flask 系列笔记,这个系列笔记将和之前的 Django 笔记一样会从 Flask 的官方文档中提取一系列的知识点,整理成系列笔记。

这是 Flask 系列笔记的第一篇,本篇笔记介绍的是 Flask 项目的搭建以及配置项的导入,我们用到的 Python 的版本还是 3.8,用到的 Flask 的版本是 2.3.2。

pip3 install flask==2.3.2

接下来我们这里用 Pycharm 创建一个项目,我们命名为 flask_blog,在其下文件夹为 app,其下再创建一个 __init__.py 文件,当前的文件结构如下:

flask_blog
    └── app
        └── __init__.py

以下是我们本篇笔记目录:

  1. 运行 Flask
  2. Flask 获取配置
  3. 区分开发环境和生产环境变量

1、运行 Flask

__init__.py 中,我们写入以下代码:

from flask import Flask

def create_app():
    app = Flask(__name__)

    @app.route("/")
    def hello():
        return "<h1>hello world</h1>"

    return app

然后在 flask_blog/ 文件夹下执行下面的命令,运行 Flask:

flask run

看到输出下面的输出就说明项目已经启动起来了:

...
* Running on http://127.0.0.1:5000/ 
Press CTRL+C to quit

然后访问服务器 5000 端口就可以看到返回内容了。

在这里我们使用 @app.route() 指定路由,然后直接 return 一个 html 文本,我们在浏览器访问的时候就会自动渲染。

指定端口

不指定的话,Flask 运行自动使用 5000 端口,如果要指定其他端口,使用 --port 参数指定。

flask run --port=9898

允许其他地址访问

如果希望其他服务器访问的话,加上 --host=0.0.0.0

debug模式

如果是在开发阶段,可以加上 --debug 参数,会自动检测系统代码变化然后重启系统。

2、Flask 获取配置

Flask 获取配置信息有几种方式,一种是从文件中获取,一种是从定义好的 dict 里获取。

从文件中获取配置

从文件里获取提供了几种方式:

app.config.from_object("app.config")

app.config.from_pyfile("./config.py")

我们在 app/ 文件夹下创建了一个 config.py 文件,其内容如下:

ABC = "123"

在执行完 from_object 或者 from_pyfile 操作之后,可以通过下面的操作获取到这些配置信息:

app.config.get("ABC")

从 dict 中获取配置

除了从文件中获取,我们还可以使用 from_mapping() 函数,将需要写入的配置放到 dict 里:

app.config.from_mapping({
    "ABC": "123"
})

注意:我们从文件中或者从 dict 中获取的变量名称都应该是大写的,否则系统不会读入。

3、区分开发环境和生产环境变量

在实际开发中,我们可能需要区分开发环境和生产环境,并且根据不同的环境读取不同的环境变量,就这个问题,这里提供一个方案

app/ 文件夹下,创建一个 config/ 文件夹,在 config/ 文件夹下创建三个文件:config.pyproduction.pydevelopment.py

config
    ├── config.py
    ├── development.py
    └── production.py

config.py 的内容如下:

import os

if os.getenv("FLASK_ENV") == "production":
    from .production import *
else:
    from .development import *

根据当前环境设置的 FLASK_ENV 是否为 production 来判断并选择加载对应的变量文件。

app/__init__.py 中还是正常加载 app.config.config 即可:

app.config.from_object("app.config.config")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Flask是一个轻量级的Python web框架,InfluxDB是一个时间序列数据库。它们可以被结合使用来创建一个高效的数据采集和可视化的web应用程序。 下面是一个简单的Flask InfluxDB目架构搭建: 1. 安装Flask和InfluxDB Python客户端 ```bash pip install Flask pip install influxdb ``` 2. 创建Flask应用程序 ```python from flask import Flask, jsonify, request from influxdb import InfluxDBClient app = Flask(__name__) # 连接InfluxDB client = InfluxDBClient(host='localhost', port=8086) @app.route('/api/data', methods=['POST']) def post_data(): # 从请求体中获取数据 data = request.get_json() # 将数据写入到InfluxDB中 client.write_points(data) return jsonify({'success': True}) if __name__ == '__main__': app.run(debug=True) ``` 3. 创建前端页面 在templates文件夹中创建一个index.html文件,用于展示数据。 ```html <!DOCTYPE html> <html> <head> <title>Flask InfluxDB Project</title> </head> <body> <h1>Flask InfluxDB Project</h1> <table> <thead> <tr> <th>时间戳</th> <th>数值</th> </tr> </thead> <tbody> {% for point in points %} <tr> <td>{{ point.time }}</td> <td>{{ point.value }}</td> </tr> {% endfor %} </tbody> </table> <script> fetch('/api/data') .then(response => response.json()) .then(data => { const tbody = document.querySelector('tbody'); data.forEach(point => { const tr = document.createElement('tr'); const td1 = document.createElement('td'); td1.innerText = point.time; const td2 = document.createElement('td'); td2.innerText = point.value; tr.appendChild(td1); tr.appendChild(td2); tbody.appendChild(tr); }); }); </script> </body> </html> ``` 4. 编写Flask路由 ```python @app.route('/') def index(): # 从InfluxDB中读取数据 result = client.query('SELECT * FROM "measurement"') points = [] for point in result.get_points(): points.append({'time': point['time'], 'value': point['value']}) return render_template('index.html', points=points) ``` 5. 运行Flask应用程序 ```bash python app.py ``` 打开浏览器,访问http://localhost:5000,您应该能够看到一个表格,其中包含从InfluxDB获取的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vv安的浅唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值