# python期末项目
**Repository Path**: zhuyijing_bwcx/python-final-project
## Basic Information
- **Project Name**: python期末项目
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-01-17
- **Last Updated**: 2021-01-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## Python语言基础技术项目介绍文档
### 一、项目介绍
#### 1.项目名称:
[智能天气查询平台](zhuyijing.pythonanywhere.com)
#### 2.项目简介:
这款智能天气查询平台为用户提供中国部分省份的天气查询服务,让用户可以随时随地查找到想要知道的城市天气状况;除此之外还提供IP定位查询服务,根据用户输入的IP地址,能够快速的帮用户定位IP的所在位置。
#### 3.功能框架结构图

#### 4.价值主张
调用高德api内的[天气查询](https://lbs.amap.com/api/webservice/guide/api/weatherinfo)与[IP定位功能](https://lbs.amap.com/api/webservice/guide/api/ipconfig),为大众推出一款智能查询平台;既与高德api形成合作获取收益,又从用户的使用中获取流量价值。
### 二、问题&解决
#### 1.问题表述
问题|具体描述
---|---
用户画像|适用于所有人群
用户需求|希望查询到目标区域当前/未来的天气情况或IP地址
使用场景|当你没有看电视天气预报,但想要知道所在城市今天的天气情况时;或者你要出发去另一个城市出差,想要知道该城市未来几天的天气情况时,可以打开此平台进行登陆查询
痛点|天气状况对人的日常生活是非常重要的,在不知道具体天气温度数据的情况下,用户需要一个可以快速查询天气状况的平台
益点|方便快速得查询到当前位置的天气或IP地址
#### 2.解决方案表述
本网站在项目内融合了[Python基础语言](https://www.runoob.com/python/python-basic-syntax.html)和[flask-web功能](https://www.cnblogs.com/momoyan/p/11028458.html),以解决用户对天气和IP查询需求为目标,建立**登陆**、**七个中国省份选择**、**省份城市选择**、**IP定位查询**、**IP查询结果**等**十个**响应式页面,并配合 [Bootstrap](https://www.runoob.com/bootstrap/bootstrap-tutorial.html) 的统一样式模版及 [HTML](https://www.runoob.com/html/html-tutorial.html) 、[CSS](https://www.runoob.com/css/css-tutorial.html) 相关知识来完成
### 三、编程功能基本描述
* 运用到的python知识结构图

* [HTML表单](https://www.w3school.com.cn/html/html_forms.asp)(用户输入账号密码进行登陆/选择查询目标)
(学习时间:3天)
```
```
```
天气查询:{{city_name}}
```
* [HTTP请求](https://blog.csdn.net/ailunlee/article/details/90600174),用于传递数据(学习时间:2天)
```
@app.route('/login', methods=['GET', 'POST'])
```
* [flask模块](https://www.cnblogs.com/jfl-xx/p/8081454.html)使用(学习时间:5天)
```
from flask import Flask, render_template, request, redirect, session
app = Flask(__name__) # flask 对象
```
* [条件判断语句](https://www.cnblogs.com/buildnewhomeland/p/12147279.html),判断用户输入的信息
(学习时间:3天)
```
# 主页
@app.route('/index')
def index():
# 对session 判断 ,没有值就跳转到登录页面
userinfo = session.get('user_info')
if not userinfo:
return redirect('/login')
return render_template('index.html')
```
* [数据列表](https://www.runoob.com/python/python-lists.html)(学习时间:2天)
```
# 去省级列表拿数据
a1 = shengjilis.get(str(username)) # 城市对应表
lis = [] # 城市表
for k in a1.keys():
lis.append(k)
# 获取查询数据,没有默认第一个
city_name = request.args.get('city')
```
* 天气查询API(学习时间:1天)
```
def cscx(city):
url = 'https://restapi.amap.com/v3/weather/weatherInfo?city=%s&key=d7c4f8b2b484585de0c319f9b8ca4652&extensions=all'%city
import requests
poo = requests.get(url)
data = poo.json()
data = data['forecasts'][0]['casts']
return now_data
```
* IP查询API(学习时间:1天)
```
# ip查询
def ipdw(ip):
url = 'https://restapi.amap.com/v3/ip?ip=%s&key=d7c4f8b2b484585de0c319f9b8ca4652&output=json'%ip
import requests
poo = requests.get(url)
data = poo.json()
data = data['province']+data['city']
return data
```
* 本项目所运用到的代码知识比较简洁,我也在运行代码期间出现过许多报错,如果出现[报错信息](https://cloud.tencent.com/developer/article/1654527),我及时查看并处理;在代码的后期优化方面我做得不够完善,也希望在项目结束后再对代码进行一些完善和改良
### 四、云端项目部署的基本描述
#### 1.云端页面链接
* 登陆页面:
http://zhuyijing.pythonanywhere.com/login
* 主页-选择目标省份/IP查询页面:
http://zhuyijing.pythonanywhere.com/index
* 天气查询页面x7:
http://zhuyijing.pythonanywhere.com/weather/hebei
http://zhuyijing.pythonanywhere.com/weather/shandong
http://zhuyijing.pythonanywhere.com/weather/shanxi
http://zhuyijing.pythonanywhere.com/weather/liaoning
http://zhuyijing.pythonanywhere.com/weather/jilin
http://zhuyijing.pythonanywhere.com/weather/heilongjiang
http://zhuyijing.pythonanywhere.com/weather/fujian
* IP查询页面:
http://zhuyijing.pythonanywhere.com/ip_query
##### 有效功能页面共有十个
#### 2.(部署后)云端功能
页面|功能
---|---
登陆页面|用户输入账号密码登陆
主页|选择目标省份天气查询/选择IP查询
天气查询页面|选择目标城市进行天气查询
IP查询页面|查询目标地点IP地址
#### 3.部署历程与心得
* [pythonanywhere](https://www.pythonanywhere.com/)官网
* [pythonanywhere部署flask](https://blog.csdn.net/weixin_45623528/article/details/105370431)教程
我在使用pythonanywhere对我的python-flask网站进行云端部署时,遇到了许多问题,环境的配置不成功(附[环境配置教程](https://www.cnblogs.com/mytianying/p/12468704.html)),压缩数据文件夹格式不对出现无法连接的错误等,最终依靠发送邮件给后台技术人员寻求指导、百度搜索教程和同班同学的指导解决了问题,部署成功
### 五、心得及感谢
* 心得:
经过十几周对python基础语言的学习,我收获颇多。在这次期末项目的执行中,我加深了对课堂知识的印象,对代码的操作有了更深层的了解;我还深刻感受到了自己学习代码上的不足,对于这门课,我感到有些吃力,但也很充实。
从一开始的不了解python到如今成型的flask_web网站,我学会写出完整的代码与调用高德API的功能成功制作该网页,并合理运用了ProcessOn来制作流程图,以及使用Pythonanywhere在云端成功部署我的网站
* 感谢:
1. 感谢中山大学南方学院网络与新媒体专业**许智超**老师的指导(附[智超老师博客](https://www.cnblogs.com/xuzhichao/p/11481598.html))
2. 感谢[高德API](https://lbs.amap.com/)平台对本项目的智能API技术支持
3. 感谢[processon](https://www.processon.com/diagrams)平台提供的免费在线作图、实时协作技术,让我轻松有效得作出需要的流程图
4. 感谢[python菜鸟教程](https://www.runoob.com/python/python-tutorial.html)为我提供代码借鉴和指导
5. 感谢[百度搜索](https://www.baidu.com/)平台为我搜索代码教程提供帮助
* 独立有效的外连URL:21个