用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 09 Python
python实现通过pil模块对图片格式进行转换的方法
Mar 24 Python
Python操作Word批量生成文章的方法
Jul 28 Python
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
Dec 18 Python
Python之Web框架Django项目搭建全过程
May 02 Python
python 3.5下xadmin的使用及修复源码bug
May 10 Python
python使用Pycharm创建一个Django项目
Mar 05 Python
Python3实现的简单验证码识别功能示例
May 02 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
ipad上运行python的方法步骤
Oct 12 Python
Django数据库操作之save与update的使用
Apr 01 Python
在python中求分布函数相关的包实例
Apr 15 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 中文和编码判断代码
2010/05/16 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
一些常用的JS功能函数(2009-06-04更新)
2009/06/04 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
node.js +mongdb实现登录功能
2020/06/18 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
Python Socket使用实例
2017/12/18 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
拾金不昧表扬信范文
2014/01/11 职场文书
歌唱比赛获奖感言
2014/01/21 职场文书
家长会标语
2014/06/24 职场文书
优秀教师先进个人事迹材料
2014/08/31 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
餐厅开业活动方案
2019/07/08 职场文书
python实现黄金分割法的示例代码
2021/04/28 Python
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python