用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 相关文章推荐
py2exe 编译ico图标的代码
Mar 08 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
python抓取百度首页的方法
May 19 Python
图解Python变量与赋值
Apr 03 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
Dec 05 Python
python中for循环把字符串或者字典添加到列表的方法
Jul 20 Python
PHP统计代码行数的小代码
Sep 19 Python
python3 pillow模块实现简单验证码
Oct 31 Python
python实现高斯(Gauss)迭代法的例子
Nov 20 Python
如何用python写个模板引擎
Jan 14 Python
Python测试框架pytest高阶用法全面详解
Jun 01 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使用cookie保存登录用户名的方法
2015/01/26 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
jquery validate poshytip 自定义样式
2012/11/26 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
2019/07/03 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
高分子材料个人求职信范文
2013/09/25 职场文书
大学生简历中个人的自我评价
2013/10/06 职场文书
办公室内勤工作职责
2013/12/11 职场文书
协议书与合同的区别
2014/04/18 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL