📜  使用 Django 的天气应用程序 | Python(1)

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

使用 Django 的天气应用程序 | Python

Django 是一个基于 Python 的 Web 应用框架,它可以帮助开发人员快速构建可移植的 Web 应用程序,具有高度的可重用性和可扩展性。本文介绍了如何使用 Django 开发一个简单的天气应用程序。

概述

本应用程序使用 OpenWeatherMap API 获取实时天气数据,并通过 Django 的模型、视图和模板来呈现这些数据。用户可以输入城市名称,然后程序会返回该城市的天气情况。

安装

安装 Django 和 requests 库:

pip install django requests
创建 Django 项目和应用程序

创建一个新的 Django 项目和应用程序:

django-admin startproject weather
cd weather
python manage.py startapp weatherapp
配置 settings.py 文件

打开 settings.py 文件,将应用程序添加到 INSTALLED_APPS 列表中:

INSTALLED_APPS = [
    'weatherapp',
]
创建模型

创建一个新的模型来存储城市名称和相关的天气数据,打开 models.py 文件:

from django.db import models

class City(models.Model):
    name = models.CharField(max_length=30)

    def __str__(self):
        return self.name
创建视图

创建一个新的视图来处理用户输入和显示天气数据,打开 views.py 文件:

import requests
from django.shortcuts import render
from .models import City

def index(request):
    url = 'https://api.openweathermap.org/data/2.5/weather?q={}&units=metric&appid=your_api_key'

    if request.method == 'POST':
        city = request.POST.get('city')
        r = requests.get(url.format(city)).json()
        if r['cod'] == 200:
            obj, created = City.objects.get_or_create(name=city.title())
            obj.save()
        else:
            message = 'City not found.'
    cities = City.objects.all()
    weather_data = []
    for city in cities:
        r = requests.get(url.format(city)).json()
        city_weather = {
            'city': city.name,
            'temperature': r['main']['temp'],
            'description': r['weather'][0]['description'],
            'icon': r['weather'][0]['icon'],
        }
        weather_data.append(city_weather)

    context = {'weather_data': weather_data}
    return render(request, 'weatherapp/weather.html', context)
创建模板

创建一个新的模板来呈现天气数据,打开 weather.html 文件:

{% extends "weatherapp/base.html" %}

{% block content %}

<form method="POST" class="form-group">
    {% csrf_token %}
    <label for="city">City:</label>
    <input type="text" name="city" id="city" class="form-control" placeholder="Enter city name">
    <button type="submit" class="btn btn-primary mt-2">Submit</button>
</form>

{% if message %}
<p>{{ message }}</p>
{% endif %}

{% if weather_data %}
{% for data in weather_data %}
<div class="card mt-3">
    <div class="card-body">
        <h2 class="card-title">{{ data.city }}</h2>
        <p class="card-text">{{ data.description }}</p>
        <p class="card-text">{{ data.temperature }}°C</p>
        <img src="http://openweathermap.org/img/w/{{ data.icon }}.png" alt="{{ data.description }}">
    </div>
</div>
{% endfor %}
{% endif %}

{% endblock %}
运行应用程序

运行 Django 服务器:

python manage.py runserver

在浏览器中打开 http://localhost:8000/,即可看到应用程序运行的界面。

结论

本文介绍了如何使用 Django 框架和 OpenWeatherMap API 开发一个简单的天气应用程序。通过使用 Django 的模型、视图和模板,使得开发过程快速而简便。