用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实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
python中实现控制小数点位数的方法
Jan 24 Python
Django学习笔记之为Model添加Action
Apr 30 Python
Python八皇后问题解答过程详解
Jul 29 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
python 循环数据赋值实例
Dec 02 Python
Numpy 多维数据数组的实现
Jun 18 Python
Python 没有main函数的原因
Jul 10 Python
Python执行时间的几种计算方法
Jul 31 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
python源文件的字符编码知识点详解
Mar 04 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 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
PHP文件操作方法汇总
2015/07/01 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
js实现秒表计时器
2019/12/16 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
Fiddler如何抓取手机APP数据包
2016/01/22 Python
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
python操作oracle的完整教程分享
2018/01/30 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
python如何基于redis实现ip代理池
2020/01/17 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
Python netmiko模块的使用
2020/02/14 Python
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
环境工程大学生自荐信
2013/10/21 职场文书
给海归自荐信的建议
2013/12/13 职场文书
国际贸易个人求职信范文
2014/01/04 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis
Linux中如何安装并部署Redis
2022/04/18 Servers