Django 天气应用 | 按城市获取天气报告

17 Mar 2025 | 6 分钟阅读

在本教程中,我们将使用 Django 创建一个天气应用;这个应用将显示搜索城市的实时天气。这是一个简单的 Django 项目,有助于初学者理解 Django 的基本概念。我们还将使用天气 API 来获取数据。

在继续本教程之前,请确保您已安装 Python 和 Django。如果未安装 Django,可以使用 pip 命令进行安装。我们建议先创建虚拟环境,然后再安装 Django。

前提条件

  • 熟悉 Python
  • 熟悉 Django 的基础知识
  • 系统应已安装 Python
  • 安装 IDE(Pycharm、VSCode、Atom、Sublime)

安装 Django

首先,打开 IDE 的终端并创建一个虚拟环境。这里我们使用 Visual Studio。可以使用以下方法创建虚拟环境。

  • 使用 pipenv shell 命令
  • 使用 venv

我们使用 pipenv shell 命令创建虚拟环境

Weather App in Django

使用此命令,我们无需激活虚拟环境。它会自动激活。现在,我们将使用 pip 命令安装 Django。


Weather App in Django

要检查 Django 是否已安装,请键入 django-admin -version 并按 Enter 键。

Weather App in Django

这意味着我们已安装最新版本的 Django。

创建项目和应用

一个 Django 项目可以包含多个应用。这里我们使用以下命令创建一个项目。

我们创建了一个名为 WeatherProject 的项目,现在我们将使用 python manage.py startapp MyWeatherApp 命令创建一个应用。

Weather App in Django

注意 - 注意,我们在运行 create project 命令时在项目名称后使用了 .(点)。这会在目录中创建一个独立的项目。我们无需进入项目即可访问 manage.py 文件。

我们使用以下命令创建了一个名为 MyWeatherApp 的新应用。

它未包含在项目中,因此要考虑该应用,我们必须将应用名称添加到 INSTALLED_APP 中。所以打开 settings.py 文件并添加新创建的应用。

Weather App in Django

此时,我们离创建应用程序又近了一步。使用以下命令运行服务器。


Weather App in Django

点击提供的链接,它将显示 Django 应用程序环境。

登录管理面板

接下来,我们将登录内置的 Django Dashboard。为此,我们需要迁移我们的数据库,这意味着 Django 将创建默认应用所需的预定义表。

在终端中键入以下命令并按 Enter 键。

这将为我们的项目创建 SQLite 数据库。这是 Django 提供的默认数据库,并且它已向数据库添加了多个表。

管理面板中会有一个用户表,用于存储我们应用中的用户。

要登录管理面板,我们需要使用以下命令创建一个管理员。

运行命令后,它会要求输入用户信息,例如用户名、电子邮件地址和密码。完成此操作后,再次启动服务器。

Weather App in Django

打开提供的链接并访问 http://127.0.0.1:8000/admin 页面,因为 admin 已在 urls.py 中设置。

添加模板和视图

现在,我们将添加模板来制作我们应用程序的布局。模板是一个 HTML 文件,它允许我们添加 Jinja 语法来使模板动态化。在 Weather Project 目录中创建一个名为 template 的新文件夹。

我们创建了 index.html 文件。我们将从天气 API 获取数据并将其渲染到模板,但现在我们将创建 VIEW 并将其映射到 URL。在 view.py 中添加以下函数。

View.py

urls.py

Django 将匹配没有端点的 URL,并将其路由到我们创建的视图函数。

使用天气 API

要获取实时天气报告,我们需要注册 Open Weather Map API。它将返回我们输入到应用程序中的任何城市的实时天气。

访问网站并创建一个帐户,然后转到仪表板上的 API 密钥。

Weather App in Django

注意 - API 密钥应保密,以防止其他方使用。

添加 city、city_weather,并导入 requests 模块。

Views.py

解释 -

在上面的视图中,我们检查方法是否为 POST,然后从表单中获取城市名称。然后我们使用 urllib.request.urlopen(). 读取特定城市的数据。我们将 source 变量传递给 json.loads(),它会将数据转换为 Python 字典。

使用此方法,我们可以轻松访问所需数据并将其保存到 context 字典中。当用户输入城市时,它将显示我们存储在 context 字典中的所有属性。

注意 - API 需要一些时间才能激活。如果未激活,请稍后重试。

现在我们将更改 html 文件。

现在我们运行服务器并单击提供的链接。它将如下所示。

Weather App in Django

在搜索框中输入城市名称,单击搜索按钮,即可获取天气数据。我们输入 Noida 并获取了天气数据。

Weather App in Django

从上面的快照中可以看出,我们已经使用 Django 框架成功创建了一个天气应用。到目前为止,我们已经了解了一些命令、创建虚拟环境,最重要的是了解了 API。我们还讨论了调用 API 和获取不同天气字段的国家代码、湿度、温度等。

您可以使该项目的 UI 更具吸引力。我们使用了 Bootstrap 类和 HTML。