📜  使用 Flask 创建天气应用程序 | Python(1)

📅  最后修改于: 2023-12-03 15:36:27.893000             🧑  作者: Mango

使用 Flask 创建天气应用程序 | Python

Flask 是一个使用 Python 编写的 Web 应用程序框架,因为其简单而又灵活的设计,使得它成为了 Python Web 开发中的主要工具之一。本文将介绍如何使用 Flask 创建一个天气应用程序。

前置要求

在本篇文章中,我们将使用 OpenWeatherMap API 获取天气数据。因此,你需要先去注册一个账号,并获取你自己的 API Key。你可以在OpenWeatherMap 的官方网站注册一个免费账号。

安装 Flask

在开始之前,您需要确保您已经安装了 Flask。如果没有安装,可以通过 pip 来进行安装:

pip install Flask
创建 Flask 应用程序

我们首先需要创建 Flask 应用程序的框架。创建一个名为 app.py 的文件,并编写以下代码:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

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

上述代码中,我们使用 Flask 的 render_template 方法渲染了一个名为 index.html 的页面,同时在 if __name__ == '__main__' 的语句块中,我们开启了 Flask Web 服务器的调试模式。

接下来,我们需要在主目录中创建一个名为 templates 的文件夹,并在该文件夹中创建 index.html 文件。在 index.html 文件中,我们可以编写我们想要的 HTML/CSS/JavaScript 代码。

使用 OpenWeatherMap API 获取天气数据

在本篇文章中,我们使用 OpenWeatherMap API 来获取天气数据。使用 API 需要以下步骤:

  1. 引入 requests 库。
  2. 指定 API 的 END POINT 和 API Key。
  3. 发送请求并获取数据。

下面是获取天气数据的代码片段:

import requests

# 指定 API 的 END POINT 和 API Key
url = 'https://api.openweathermap.org/data/2.5/weather?q=Shenzhen,CN&appid=YOUR_API_KEY'

# 发送请求并获取数据
response = requests.get(url)
data = response.json()

在上述代码片段中,我们指定了 city 和 Country Code 并指定了我们自己的 API Key,然后使用 requests 库向 OpenWeatherMap 发送了请求,并将响应转换成 JSON 格式后赋值给 data 变量。

将天气数据呈现在页面上

在获取天气数据之后,我们需要将其呈现在页面上。我们首先需要将天气数据传递到 index.html 页面中。修改 app.py 文件的代码如下:

from flask import Flask, render_template, jsonify
import requests

app = Flask(__name__)

@app.route('/')
def index():
    # 获取天气数据
    url = 'https://api.openweathermap.org/data/2.5/weather?q=Shenzhen,CN&appid=YOUR_API_KEY'
    response = requests.get(url)
    data = response.json()

    # 将天气数据传递到 index.html 页面中
    return render_template('index.html', data=data)

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

上述代码中,我们新增了一个 /data 的路由,并在路由中获取天气数据,并将其转换为 JSON 格式,最终将其传递到 index.html 页面中。

在 index.html 页面中,我们可以使用 Jinja2 模板引擎来渲染数据。修改 index.html 文件的代码如下:

<!doctype html>
<html>
    <head>
        <title>Weather App</title>
    </head>
    <body>
        <h1>Current Weather in {{ data['name'] }}</h1>
        <p>Temperature: {{ round(data['main']['temp'] - 273.15) }}°C</p>
        <p>Weather: {{ data['weather'][0]['main'] }}</p>
    </body>
</html>

在上述代码中,我们通过 Jinja2 模板引擎将从 Flask 应用程序中传递过来的 JSON 格式数据呈现在了页面上。

到此,我们就成功地创建了一个使用 Flask 创建天气应用程序的案例。

结语

本文介绍了如何使用 Flask 框架和 OpenWeatherMap API 来创建一个天气应用程序,并主要涉及到了 Flask 的路由和模板引擎以及 OpenWeatherMap API 的使用。希望本文对您有所帮助。