用Django写天气预报查询网站


Posted in Python onOctober 21, 2018

创建项目

创建工程项目如下所示:

用Django写天气预报查询网站

设置文件settings.py中的设置主要有两个

1.注册app

2.设置templates的路径

前面的文章已经介绍过多次如何设置了,此处不再做详细赘述。

接口api为:http://api.map.baidu.com/telematics/v3/weather?location=%E9%83%91%E5%B7%9E&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?

主要流程分以下几步:

1.从接口获取数据,经过urls.py文件传送给index.html文件。

2.在index.html文件中做界面处理,使界面美观好看。

3.添加查询功能。

获取数据和传送数据在前面的电影查询网站已经讲过 ,这里着重说一下添加查询功能的原理。

本次仍然是用form表单实现查询功能,form表单的method不做设置的话会默认get请求,当我们第一次传送数据到界面之后,

可以在form表单设置个请求方式,然后在下次请求数据的时候,添加一个判断,判断的时候把form表单输入的城市信息更改

为下次请求的时候的城市信息即可。

下附代码:

视图文件views.py文件中的代码如下:

from django.shortcuts import render
import requests
# Create your views here.
def index(request):
  if request.method == 'POST':
    city = request.POST['city']
    url = 'http://api.map.baidu.com/telematics/v3/weather?location={}&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?'.format(city)
  else:
    url = 'http://api.map.baidu.com/telematics/v3/weather?location=%E9%83%91%E5%B7%9E&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?'
  json_data = requests.get(url).json()
  weather = json_data['results'][0]['weather_data']
  today_weather = weather[0]
  t_weather = weather[1]
  tt_weather = weather[2]
  ttt_weather =weather[3]
  city = json_data['results'][0]['currentCity']
  context = {
    'today':today_weather,
    'city':city,
    'list':[t_weather,tt_weather,ttt_weather]
  }
  return render(request,'index.html',context)

urls.py文件中的代码如下:

from django.contrib import admin
from django.urls import path
from myApp import views
urlpatterns = [
  path('admin/', admin.site.urls),
  path('index/',views.index),
  path('select/',views.index),
]

index.html界面文件代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>{{city}}天气信息</title>
  <style>
    html,body{
      height:100%;
      margin:0;
      color: white;
      text-align: center;
    }
    body{
      /*渐变色*/
      background: linear-gradient(#1078c7,#7196b4);
    }
    form{
      text-align: center;
    }
    main img{
      width: 80px;
    }
    h1{
      margin:5px;
    }
    footer{
      display: flex;
    }
    section{
      flex-grow: 1;
      border-right:1px solid greenyellow;
    }
    section:nth-child(3){
      border:none;
    }
  </style>
</head>
<body>
  <form action="/select/" method="POST">
    {% csrf_token %}
    <input name="city" type="text" placeholder="请输入城市">
    <button type="submit">查询</button>
  </form>
  <main>
    <h2>实时天气</h2>
    <img src="{{today.dayPictureUrl}}" alt="">
    <h1>{{today.temperature}}</h1>
    <div>
      {{today.weather}}<br>
      {{today.wind}}<br>
      {{today.date}}<br>
    </div>
  </main>
  <footer>
    {% for weather in list %}
      <section>
        <h4>{{weather.date}}</h4>
        <img src="{{weather.dayPictureUrl}}" alt="">
        <div>
          {{weather.temperature}}<br>
          {{weather.weather}}<br>
          {{weather.wind}}<br>
        </div>
      </section>
    {% endfor %}
  </footer>
</body>
</html>

python manage.py runserver 启动服务器,在浏览器打开网址,即可看到效果:

 用Django写天气预报查询网站

在上面的查询框中输入城市名,即可查询别的城市天气信息:

用Django写天气预报查询网站

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
python获取本地计算机名字的方法
Apr 29 Python
Python文件右键找不到IDLE打开项解决办法
Jun 08 Python
Python书单 不将就
Jul 11 Python
详解Python map函数及Python map()函数的用法
Nov 16 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
Dec 31 Python
Python实现插入排序和选择排序的方法
May 12 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
Django中自定义模型管理器(Manager)及方法
Sep 23 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
Python爬取12306车次信息代码详解
Aug 12 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 #Python
python高效过滤出文件夹下指定文件名结尾的文件实例
Oct 21 #Python
Python根据文件名批量转移图片的方法
Oct 21 #Python
浅谈Python中的bs4基础
Oct 21 #Python
python清除字符串前后空格函数的方法
Oct 21 #Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 #Python
Scrapy框架使用的基本知识
Oct 21 #Python
You might like
php中require和require_once的区别说明
2014/02/27 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
11款基于Javascript的文件管理器
2009/10/25 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
JS按条件 serialize() 对应标签的使用方法
2017/07/24 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
Vue+webpack实现懒加载过程解析
2020/02/17 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
详解Python之unittest单元测试代码
2018/01/24 Python
python实现图片九宫格分割
2021/03/07 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
Python如何急速下载第三方库详解
2020/11/02 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
python中random模块详解
2021/03/01 Python
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
安全检查验收制度
2014/01/12 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
读群众路线心得体会
2014/03/07 职场文书
建立共青团委员会的请示
2019/04/02 职场文书