用Django写天气预报查询网站

下面为您详细讲解“用Django写天气预报查询网站”的完整攻略,包含两条示例说明。

一、Django基础知识

1.1 什么是Django?

Django 是一个高级的 Python web 框架,可以快速搭建 Web 应用程序和网站。Django 非常强大,提供许多内置功能,如 ORM 、模板和缓存等。

1.2 安装Django

在安装 Django 之前,首先需要有 Python 环境,可以从官网下载安装(https://www.python.org/downloads/)。

接着,使用 pip 命令安装 Django:

pip install Django

1.3 创建Django项目

在安装好 Django 后,就可以创建 Django 项目了,使用以下命令:

django-admin startproject project_name

其中,project_name 是项目的名称,可以根据自己的需要来命名。这个命令会在当前目录下创建一个名为 project_name 的文件夹,并在其中创建一些必要的文件和目录结构。

1.4 创建Django应用

在 Django 中,一个项目可以包含多个应用程序。每个应用程序是一个独立的模块,可以在不同的项目中重用。

要创建一个 Django 应用程序,可以使用以下命令:

python manage.py startapp app_name

其中,app_name 是应用程序的名称,同样可以根据自己的需要来命名。这个命令会在项目目录中创建一个名为 app_name 的文件夹,并在其中创建一些必要的文件和目录结构。

1.5 启动Django服务器

在完成上述步骤后,就可以启动 Django 服务器了,使用以下命令:

python manage.py runserver

在浏览器中访问 http://127.0.0.1:8000/,就可以看到 Django 的欢迎页面。

二、用Django写天气预报查询网站

2.1 示例一:查询城市天气

我们首先需要一个天气预报的API,这里我们选择使用和风天气API。注册并登录后,可以创建自己的应用,获取API Key。

接下来,我们来创建一个简单的 Django 应用,实现查询城市天气的功能。

  1. 创建一个新的 Django 应用

使用以下命令创建一个名为 weather 的 Django 应用:

python manage.py startapp weather
  1. weather 应用中创建视图函数

weather/views.py 文件中编写以下代码:

from django.shortcuts import render
import requests
import json

def index(request):
    if 'city' in request.GET:
        city = request.GET.get('city')
        headers = {
            'Authorization': 'APPCODE your_appcode',
        }
        params = {
            'city': city,
        }
        response = requests.get('https://api.heweather.net/s6/weather/now', headers=headers, params=params)
        data = json.loads(response.text)
        if data['HeWeather6'][0]['status'] == 'ok':
            weather_info = data['HeWeather6'][0]['now']
        else:
            weather_info = {}
    else:
        city = ''
        weather_info = {}
    context = {
        'city': city,
        'weather_info': weather_info,
    }
    return render(request, 'weather/index.html', context)

这个视图函数会通过调用和风天气API来获取指定城市的天气信息,并将信息传递给模板进行渲染。其中,your_appcode 需要替换为自己的API Key。

  1. 创建模板文件

weather/templates/weather 目录下创建一个名为 index.html 的模板文件,并编写以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>查询城市天气</title>
</head>
<body>
    <form method="get">
        <label for="city">城市:</label>
        <input type="text" id="city" name="city" value="{{ city }}">
        <button type="submit">查询</button>
    </form>
    {% if weather_info %}
        <hr>
        <p>城市:{{ city }}</p>
        <p>天气:{{ weather_info.cond_txt }}</p>
        <p>温度:{{ weather_info.tmp }}℃</p>
        <p>风力:{{ weather_info.wind_dir }}{{ weather_info.wind_sc }}级</p>
    {% endif %}
</body>
</html>

这个模板文件包含一个查询表单和一个用于显示天气信息的区域。

  1. 添加URL映射

weather 应用的 urls.py 文件中添加以下代码:

from django.urls import path
from . import views

app_name = 'weather'

urlpatterns = [
    path('', views.index, name='index'),
]

这个代码片段会将 weather 应用的根路径(即 http://127.0.0.1:8000/weather/)映射到 index() 视图函数。

  1. 启动Django服务器并测试

使用以下命令启动 Django 服务器:

python manage.py runserver

在浏览器中访问 http://127.0.0.1:8000/weather/,就可以看到一个用于查询城市天气的页面。输入城市名称后,点击查询按钮,页面将会显示出指定城市的天气信息。

2.2 示例二:查询周边景点

和风天气API还提供了一个查询城市景点列表的API,我们可以使用它来实现查询周边景点的功能。

  1. weather/views.py 文件中添加一个新的视图函数:
def scenic_spot(request):
    if 'city' in request.GET:
        city = request.GET.get('city')
        headers = {
            'Authorization': 'APPCODE your_appcode',
        }
        params = {
            'city': city,
        }
        response = requests.get('https://api.heweather.net/s6/scenic', headers=headers, params=params)
        data = json.loads(response.text)
        if data['HeWeather6'][0]['status'] == 'ok':
            scenic_spot_list = data['HeWeather6'][0]['scenicList']
        else:
            scenic_spot_list = []
    else:
        city = ''
        scenic_spot_list = []
    context = {
        'city': city,
        'scenic_spot_list': scenic_spot_list,
    }
    return render(request, 'weather/scenic.html', context)

这个视图函数会通过调用和风天气API来获取指定城市的景点列表,并将列表传递给模板进行渲染。其中,your_appcode 需要替换为自己的API Key。

  1. weather 应用的 urls.py 文件中添加以下代码:
urlpatterns = [
    path('', views.index, name='index'),
    path('scenic_spot/', views.scenic_spot, name='scenic_spot'),
]

这个代码片段会将 /scenic_spot/ 路径映射到 scenic_spot() 视图函数。

  1. 创建模板文件

weather/templates/weather 目录下创建一个名为 scenic.html 的模板文件,并编写以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>查询景点列表</title>
</head>
<body>
    <form method="get">
        <label for="city">城市:</label>
        <input type="text" id="city" name="city" value="{{ city }}">
        <button type="submit">查询</button>
    </form>
    {% if scenic_spot_list %}
        <hr>
        <p>城市:{{ city }}</p>
        <ul>
        {% for scenic_spot in scenic_spot_list %}
            <li>{{ scenic_spot.name }}({{ scenic_spot.category }})</li>
        {% empty %}
            <li>暂无数据</li>
        {% endfor %}
        </ul>
    {% endif %}
</body>
</html>

这个模板文件包含一个查询表单和一个用于显示景点列表的区域。

  1. 启动Django服务器并测试

使用以下命令启动 Django 服务器:

python manage.py runserver

在浏览器中访问 http://127.0.0.1:8000/weather/scenic_spot/,就可以看到一个用于查询周边景点的页面。输入城市名称后,点击查询按钮,页面将会显示出指定城市的景点列表。

总的来说,用Django写天气预报查询网站,需要掌握Django基础知识,如应用、视图函数、模板等,同时需要了解如何从第三方API中获取数据,并将数据传递给模板进行渲染。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用Django写天气预报查询网站 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Django中的表关系实现及操作

    表关系的实现   预备知识 ORM的正向操作和反向操作: 1.正向操作:一个模型中定义了一个外键,通过该模型对该外键操作的操作叫做正向操作。 2.反向操作:被外键所关联的模型,通过该模型对外键所在模型的操作叫做反向操作。   表关系的操作 我们通过下面的案例,来了解表关系的操作 首先我们需要几张表:学生表,学生信息表,班级表,报名表,课程表 他们的关系是:学…

    Django 2023年4月16日
    00
  • 基于Django用户认证系统详解

    下面是关于“基于Django用户认证系统详解”的完整攻略,包含两条示例说明。 什么是Django用户认证系统? Django用户认证系统是Django框架提供的一个内置模块,它可以帮助我们轻松地实现用户认证、授权和管理等功能。 Django用户认证系统的使用 准备工作 首先,我们需要创建一个Django项目,并且在settings.py文件中将’django…

    Django 2023年5月16日
    00
  • Django如何重设Admin密码

    django设置用户是python manage.py createsuperuser,但是如果忘记密码,那么应该进入shell环境 下修改 python manage.py shell   from django.contrib.auth.models import User user = User.objects.get(username=’admin’…

    Django 2023年4月11日
    00
  • 详解Django模版中加载静态文件配置方法

    当我们使用Django进行web开发时,我们常常需要加载静态文件,比如CSS样式、JavaScript脚本、图片等。在Django中,我们通常使用模版来组织和呈现我们的网页,那么如何在Django模版中加载静态文件呢? 下面是Django模版中加载静态文件配置方法的攻略: 第一步:在settings.py文件中设置静态文件路径 在django的setting…

    Django 2023年5月16日
    00
  • django项目环境搭建及在虚拟机本地创建django项目的教程

    下面我来详细讲解“django项目环境搭建及在虚拟机本地创建django项目的教程”的完整攻略。该攻略包含了以下两部分示例: Windows本地环境下的django项目搭建 在虚拟机中进行django项目的创建和部署 1. Windows本地环境下的django项目搭建 安装Python 首先,我们需要安装Python。可以在官网上下载最新的Python安装…

    Django 2023年5月16日
    00
  • django 多数据库及分库实现方式

    下面我将为您详细讲解“Django 多数据库及分库实现方式”的完整攻略。 1. 什么是 Django 多数据库? Django 多数据库(multi-database)是指可以在 Django 项目中连接并管理多个数据库。在默认情况下,Django 项目只连接一个数据库,但实际应用中会遇到一些场景需要连接多个数据库,例如需要将用户数据和物品数据分别存储到不同…

    Django 2023年5月16日
    00
  • pycharm 中 django 导入静态文件不提示补全

      File—》setting—–》Languages & Frameworks ——> Python Template  Languages ——>Template language 选中Django 然后保存        

    Django 2023年4月11日
    00
  • Django:(01) 关于什么是Django?

      一、从 WSGI 开始了解 Django   在了解 Django 之前有必要先了解一下 Python 被用于 Web 开发的基础协议——WSGI。   在开发 web 应用时,我们不希望接触到TCP连接、HTTP原始请求和响应格式等一系列麻烦的事情,我们只想专心用 Python 编写 Web 业务,我们该怎么做?   我们需要把这些底层的麻烦事封装成一…

    Django 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部