用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 01 Python
探究Python中isalnum()方法的使用
May 18 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
python自动发送邮件脚本
Jun 20 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
对Python中DataFrame选择某列值为XX的行实例详解
Jan 29 Python
pytorch:model.train和model.eval用法及区别详解
Feb 20 Python
PyQt中使用QtSql连接MySql数据库的方法
Jul 28 Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 Python
python中温度单位转换的实例方法
Dec 27 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
python - asyncio异步编程
Apr 06 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
浅谈电磁辐射对健康的影响
2021/03/01 无线电
php统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
HTML的select控件美化
2017/03/27 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
利用Javascript实现一套自定义事件机制
2017/12/14 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
Python实现获取某天是某个月中的第几周
2015/02/11 Python
python根据出生日期返回年龄的方法
2015/03/26 Python
Python下载指定页面上图片的方法
2016/05/12 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
opencv python图像梯度实例详解
2020/02/04 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
企业管理专业个人求职信范文
2013/09/24 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
产品质量保证书范本
2015/02/27 职场文书
乒乓球比赛通知
2015/04/27 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
行政处罚告知书
2015/07/01 职场文书
旅游投诉信范文
2015/07/02 职场文书
导游词之桂林山水
2019/09/20 职场文书