用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 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
简单谈谈Python的pycurl模块
Apr 07 Python
基于python绘制科赫雪花
Jun 22 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
Python flask框架post接口调用示例
Jul 03 Python
AUC计算方法与Python实现代码
Feb 28 Python
简单了解pytest测试框架setup和tearDown
Apr 14 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
Jun 30 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
python 制作网站小说下载器
Feb 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
让PHP以ROOT权限执行系统命令的方法
2011/02/10 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
jQuery 一个图片切换的插件
2011/10/09 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
React Native react-navigation 导航使用详解
2017/12/01 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
小程序实现多列选择器
2019/02/15 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
python实现桌面托盘气泡提示
2019/07/29 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
Python 实现向word(docx)中输出
2020/02/13 Python
详解Python多线程下的list
2020/07/03 Python
python 下划线的不同用法
2020/10/24 Python
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
优秀班集体获奖感言
2014/02/03 职场文书
太太口服液广告词
2014/03/20 职场文书
基于Python实现将列表数据生成折线图
2022/03/23 Python