📅  最后修改于: 2023-12-03 15:36:27.543000             🧑  作者: Mango
Django 是一个基于 Python 的 Web 应用框架,它可以帮助开发人员快速构建可移植的 Web 应用程序,具有高度的可重用性和可扩展性。本文介绍了如何使用 Django 开发一个简单的天气应用程序。
本应用程序使用 OpenWeatherMap API 获取实时天气数据,并通过 Django 的模型、视图和模板来呈现这些数据。用户可以输入城市名称,然后程序会返回该城市的天气情况。
安装 Django 和 requests 库:
pip install django requests
创建一个新的 Django 项目和应用程序:
django-admin startproject weather
cd weather
python manage.py startapp weatherapp
打开 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 的模型、视图和模板,使得开发过程快速而简便。