用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实现类似ftp传输文件的网络程序示例
Apr 08 Python
Python获取电脑硬件信息及状态的实现方法
Aug 29 Python
Python作用域用法实例详解
Mar 15 Python
Python Web编程之WSGI协议简介
Jul 18 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
python支持多线程的爬虫实例
Dec 21 Python
Python发送手机动态验证码代码实例
Feb 28 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
python虚拟环境模块venv使用及示例
Mar 04 Python
python中random模块详解
Mar 01 Python
Django debug为True时,css加载失败的解决方案
Apr 24 Python
Python 文本滚动播放器的实现代码
Apr 25 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面向对象中的魔术方法中文说明
2014/03/04 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
PHP经典算法集锦【经典收藏】
2016/09/14 PHP
让textarea自动调整大小的js代码
2011/04/12 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
Python学习入门之区块链详解
2017/07/25 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
HTTP状态码详解
2021/03/18 杂记
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
大课间体育活动方案
2014/03/12 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
优秀党员事迹材料
2014/12/18 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书