用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多线程threading.Lock锁用法实例
Nov 01 Python
python下载文件时显示下载进度的方法
Apr 02 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
Jun 15 Python
matplotlib设置legend图例代码示例
Dec 19 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
python3 读写文件换行符的方法
Apr 09 Python
Python3中在Anaconda环境下安装basemap包
Oct 21 Python
python3爬虫怎样构建请求header
Dec 23 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
python3射线法判断点是否在多边形内
Jun 28 Python
Python文件操作函数用法实例详解
Dec 24 Python
如何在mac版pycharm选择python版本
Jul 21 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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
php网页后退不再出现过期
2007/03/08 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
浅谈javascript的调试
2015/01/28 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
浅谈MySQL中的触发器
2015/05/05 Python
python字典排序实例详解
2015/05/20 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
python中字符串内置函数的用法总结
2018/09/13 Python
python实现图片中文字分割效果
2019/07/22 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
COSETTE官网:奢华,每天
2020/03/22 全球购物
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
酒店总经理助理岗位职责
2014/02/01 职场文书
《乌塔》教学反思
2014/02/17 职场文书
职业生涯规划书前言
2014/04/15 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
博士生专家推荐信
2014/09/26 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
Python 中面向接口编程
2022/05/20 Python
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技