用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中字符串的常见操作技巧总结
Jul 28 Python
和孩子一起学习python之变量命名规则
May 27 Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 Python
Python将string转换到float的实例方法
Jul 29 Python
对python中的装包与解包实例详解
Aug 24 Python
python3 动态模块导入与全局变量使用实例
Dec 22 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
利用django model save方法对未更改的字段依然进行了保存
Mar 28 Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 Python
Python通过字典映射函数实现switch
Nov 06 Python
浅谈Python协程asyncio
Jun 20 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
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
据说是雅虎的一份PHP面试题附答案
2009/01/07 PHP
PHP微框架Dispatch简介
2014/06/12 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
python中嵌套函数的实操步骤
2019/02/27 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
如何理解Python中包的引入
2020/05/29 Python
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
黄金搭档广告词
2014/03/21 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
体育委员竞选稿
2015/11/21 职场文书
导游词之张家口
2019/12/13 职场文书
Python基础之条件语句详解
2021/06/16 Python