用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使用urllib2获取网络资源实例讲解
Dec 02 Python
python中map()与zip()操作方法
Feb 27 Python
利用python实现数据分析
Jan 11 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
Python使用QRCode模块生成二维码实例详解
Jun 14 Python
python实现将一个数组逆序输出的方法
Jun 25 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
Dec 10 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
如何在python中实现随机选择
Nov 02 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
解决c++调用python中文乱码问题
Jul 29 Python
如何利用Python写个坦克大战
Nov 18 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面向对象编程快速入门
2006/10/09 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
webpack之引入图片的实现及问题
2018/10/08 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python实现优先级队列结构的方法详解
2016/06/02 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
python os.path模块常用方法实例详解
2018/09/16 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
python3 mmh3安装及使用方法
2019/10/09 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
校园主题婚礼活动策划方案
2014/09/15 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
诚信教育主题班会
2015/08/13 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python