# Python期末项目 **Repository Path**: tangliling_529/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**: 2 - **Forks**: 0 - **Created**: 2021-01-18 - **Last Updated**: 2025-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python(Python编程+Flask Web)期末项目文档 文档名称 | Python期末项目 -|- 产品名称 | 小囡网站 产品描述 | 实现高德地图API中的天气查询和静态地图功能的flask网站。 文档作者 | 唐丽玲 - [pythonanywhere链接](http://whna.pythonanywhere.com/) # 一、MVP加/价值主张宣言 ## 1.价值主张 本网站利用利用高德地图API中的天气查询和静态地图进行整合并加值和优化,帮助用户在出门前查询天气状况和查看地图详情,让自己在出门前有所准备。 ## 2.页面使用流程图 ![流程图](images/流程图.png) ## 3.智能加值 * 利用高德地图API的天气查询,用户可以查询目标区域当前/未来的天气情况。 * 利用高德地图API的静态地图,用户可以查询目标位置的具体详细地图 * 利用python基础语言进行flask网站搭建 * 利用HTML进行网页样式添加 ## 4.网页各界面(提示:可能需要从第一页先开始进去,不然直接点网页可能会显示错误,辛苦啦!) * [欢迎页面](http://whna.pythonanywhere.com/) ![欢迎页面](images/欢迎页面.png) * [登录页面](http://whna.pythonanywhere.com/login?)(可使用账号123456,密码123456进行登录) ![登录](images/登录页面.png) * [注册页面](http://whna.pythonanywhere.com/register?) ![注册页面](images/注册页面.png) * [注册成功页面](http://whna.pythonanywhere.com/registered) ![注册成功页面](images/注册成功页面.png) * [功能选择页面](http://whna.pythonanywhere.com/loginstart) ![功能选择页面](images/功能选择页面.png) * [天气查询功能页面](http://whna.pythonanywhere.com/weather) ![天气查询功能页面](images/天气查询功能页面.png) * [天气查询信息页面](http://whna.pythonanywhere.com/result) ![天气查询信息页面](images/天气查询信息页面.png) * [静态地图功能页面](http://whna.pythonanywhere.com/map?) ![静态地图功能页面](images/静态地图功能页面.png) * [静态地图信息页面](http://whna.pythonanywhere.com/map_result) ![静态地图信息页面](images/静态地图信息页面.png) * [日志系统浏览页面](http://whna.pythonanywhere.com/viewlog?) ![日志系统浏览页面](images/日志系统页面.png) --- # 二、问题表述 ## 1.项目主要做什么 * 在网页注册账号后可以查询目标区域的天气信息和获取静态地图的详细信息。 ## 2.项目核心功能 * 账号的注册、登录与浏览日志系统操作。 * 查询目标区域的天气信息。 * 获取目标位置的详细的静态地图信息 ## 3.问题所在与用户需求 #### (1)问题(痛点): * 临时出门,不知道天气情况 * 去某个地方,想去逛逛周边,不知道那里的周边信息 #### (2)用户画像 ![A](images/A.png) ![B](images/B.png) --- # 三、解决方案表述 ## 1.项目整体规划 ##### (1)实现注册、登录功能。 ##### (1)运用python基础语言实现flask web搭建网站,进行前后端交互。 ##### (3)调用高德地图API天气查询、静态地图的代码。 ##### (4)制作html页面,搜集背景图片,优化页面。 ## 2.所用Python知识点 |知识点|运用场景举例| |----|----| |with open方法|操作文件夹| |request请求|API功能调用| |嵌套字典取值|API返回结果信息页面展示选择| |函数的定义、封装,模块的调用|大部分| --- # 四、编程功能的基本描述 |编程功能|实现方法|学习时长| |----|----|----| |flask web搭建|Flask框架、python基础语言|1个月| |HTML界面设计|html语法、CSS样式模板|3天| |API功能调用|request请求、jupyter notebook编辑运行|10天| |云端部署|pythonanywhere网站部署|5天| ## 1. 具体实践的思路及方法 ##### (1)调用模块 ``` from flask import Flask,jsonify,render_template,request,escape from panduan import panduan,log from geo import geocode,weatherInfo,staticmap import requests,json import pandas as pd ``` ##### (2)启动服务器 ``` app = Flask(__name__) @app.route('/',methods=["GET"]) def hello() -> str: return "hello python web" · · · if __name__ == '__main__': app.run(debug=True) ``` ##### (3)添加页面 ``` # 开始界面 @app.route("/",methods = ["GET"]) def index() ->"html": return render_template("index.html") # 登录界面 @app.route("/login",methods = ["GET"]) def login(): return render_template("login.html") # 注册界面 @app.route("/register",methods = ["GET"]) def register() ->"html": return render_template("register.html") # 注册成功界面 @app.route("/registered",methods = ["POST"]) def registered() ->"html": zhuce_zhanghao = request.form["zhuce-zhanghao"] zhuce_mima = request.form["zhuce-mima"] log(zhuce_zhanghao,zhuce_mima) return render_template("registered.html") # 功能选择界面 @app.route("/loginstart",methods = ["POST"]) def start(): zhanghao = request.form["zhanghao"] mima = request.form["mima"] zhanghao=int(zhanghao) mima = int(mima) a = panduan(zhanghao,mima) log_request(request,a) if a == "true": return render_template("loginstart.html") else: return render_template("loginfail.html",loginfail = "登录失败") # 天气查询界面 @app.route("/weather",methods = ["POST"]) def weather(): return render_template("weather.html") · · · ``` ##### (4)记录日志 ``` def log_request(req:"flask_request",res:str): with open("viewlog.log","a") as log: print(req.form,req.remote_addr,req.user_agent,res,file=log,sep='|') ``` ##### (5)高德地图API调用 ``` @app.route("/result",methods = ["POST"]) def hello_login(): maincity = request.form["city"] tianqi = weatherInfo(maincity) province1 = tianqi["lives"][0]['province'] city1 = tianqi["lives"][0]['city'] adcode1 = tianqi["lives"][0]['adcode'] weather1 = tianqi["lives"][0]['weather'] temperature1 = tianqi["lives"][0]['temperature'] winddirection1 = tianqi["lives"][0]['winddirection'] windpower1 = tianqi["lives"][0]['windpower'] humidity1 = tianqi["lives"][0]['humidity'] reporttime1 = tianqi["lives"][0]['reporttime'] return render_template( "weather_results.html", the_geocode = tianqi, province = province1, city = city1, adcode = adcode1, weather = weather1, temperature = temperature1, winddirection = winddirection1, windpower = windpower1, humidity = humidity1, reporttime = reporttime1 ) ``` --- # 五、云端项目部署的基本描述 ## 1.不同页面的链接 #### 可使用账号123456,密码123456登录 #### tips:如果上面账号登录不了,可以选择自己注册一下,需要进行登录才能进入下一个页面。 * [欢迎页面](http://whna.pythonanywhere.com/) * [登录页面](http://whna.pythonanywhere.com/login?) * [注册页面](http://whna.pythonanywhere.com/register?) * [注册成功页面](http://whna.pythonanywhere.com/registered) * [功能选择页面](http://whna.pythonanywhere.com/loginstart) * [天气查询功能页面](http://whna.pythonanywhere.com/weather) * [天气查询信息页面](http://whna.pythonanywhere.com/result) * [静态地图功能页面](http://whna.pythonanywhere.com/map?) * [静态地图信息页面](http://whna.pythonanywhere.com/map_result) * [日志系统浏览页面](http://whna.pythonanywhere.com/viewlog?) ## 2.核心功能数据流程图 ![数据流程图](images/数据流程图.png) ## 3.部署心得 ##### 刚开始进行pythonanywhere注册的时候一直不成功,导致上课的时候跟不上进度,稍微一不留神就会跟不上了,这让我觉得很焦虑,后面申请注册成功的时候,我请教了同学们,但在过程中也出现了很多问题,这一度让我想放弃,好在后面在同学的部署成功的经验分享下,我成功部署了。 --- # 六、学习/实践心得总结及感谢 ## 1.学习/实践心得 通过本学期对python的学习,我感觉到自己没有很好地掌握该门编程语言。在前期的时候还能认真听懂,到了后面知识越来越丰富,然后上课听不太懂没跟上老师的节奏,导致自己长期处于焦虑的状态下。特别是这次的期末实践,更是让我很无能为力,在开始准备期末项目制作的时候,我整个人完全是不知所措的,不知道该从哪一步出发,好在后面在同学们的帮助了,我慢慢地开始了。通过这段时间的不断熬夜,我终于完成了本次的期末项目。这次的实践也给我了教训,上课一定要认真听讲,不要走神,而且课后也要及时巩固课程知识,掌握好知识语言! ## 2.对同行/同侪成果的尊重引用 - [高德地图API中的天气查询API技术文档](https://lbs.amap.com/api/webservice/guide/api/weatherinfo) - [高德地图API中的静态地图API技术文档](https://lbs.amap.com/api/webservice/guide/api/staticmaps) - [Flask基本框架](https://www.jianshu.com/p/0f528c47c5bf) - [在Python的Flask框架中使用模版的入门教程](https://www.jb51.net/article/64434.htm) - [欢迎来到 Flask 的世界 — Flask 中文文档( 1.1.1 )](https://dormousehole.readthedocs.io/en/latest/) - [CSDN PythonAnywhere部署Flask项目](https://blog.csdn.net/weixin_45623528/article/details/105370431) - [菜鸟教程](https://www.runoob.com/html/html5-intro.html) - [CSDN 错误之data_insertt() takes 1 positional argument but 2 were given解决方法](https://blog.csdn.net/weixin_38383877/article/details/81201503?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242) - [CSDN string indices must be integers 错误可能的原因](https://blog.csdn.net/weixin_43256057/article/details/83867876) - [简书 【python】 open()与with open()](https://www.jianshu.com/p/446d138aea71) - [Python PEP8 编码规范中文版](https://www.cnblogs.com/zhigu/p/10349048.html) - [迅捷画图](https://www.liuchengtu.com/) - [教你如何做好用户画像|人人都是产品经理](http://www.woshipm.com/pmd/163654.html) - [Flask使用日志记录到文件示例](https://www.polarxiong.com/archives/Flask%E4%BD%BF%E7%94%A8%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E5%88%B0%E6%96%87%E4%BB%B6%E7%A4%BA%E4%BE%8B.html) - [在Python的Flask框架中使用模版的入门教程](https://www.jb51.net/article/64434.htm) - [bootstrap中文网](https://www.bootcss.com/) - [log文件的读并写入.text文件](https://blog.csdn.net/yuchou123456789/article/details/7198657) - [欢迎来到 Flask 的世界 — Flask 中文文档( 1.1.1 )](https://dormousehole.readthedocs.io/en/latest/) - **有充份的独特有效外连URL(参考博客、参考技术文档、参考github等):18个**