# python project **Repository Path**: caimingli/python-project ## Basic Information - **Project Name**: python project - **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-21 - **Last Updated**: 2021-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一、项目介绍 **[云端部署pythonanywhere链接](http://hahacai153.eu.pythonanywhere.com/)** :arrow_left: :bangbang: | 网站名称 | 哈哈步行导航 | |------|-------------------------------------| | 网站类型 | 具有导航功能的交互型网站 | ### 3. 加值宣言: - 人工智能API:调用 [高德API开放平台](https://lbs.amap.com/) 的 **[“地理编码”API](https://lbs.amap.com/api/webservice/guide/api/georegeo)** 和 **[“路径规划”API](https://lbs.amap.com/api/webservice/guide/api/direction#walk)**,给用户提供方便快捷的步行导航平台。 - 使用Python的Flask 进行网站的开发,通过Pythonanywhere进行云端部署 ### 4.界面流程图 [](https://gitee.com/caimingli/python-project/raw/master/images/4-2.png) # 二、问题描述(痛点) - 导航软件功能很多,操作起来繁琐复杂。 - 有时路程过短,也要打开专门的导航软件,浪费时间。 - 有时候向他人指路时,总是说不清楚,缺少一个立刻生成文本型的导航软件。 # 三、解决方案 ### 1. 项目的整体规划 - 高德API功能的调用 通过调用高德API的步行路径规划,在后台通过对高德API返回的结果提取所需要的信息返回前端即时生成导航文本,对路程较短、在外信号不好的人来说很方便,节省时间。而通过用户对线下小地图的探索,也大大增加了地图数据库的丰富性 ### 2. 用到的基本的Python基础知识点 | 网站功能 | Python基础知识点 | |-----------|-------------------------| | Flask Web | 调用模块,定义函数,传递参数等知识 | | 高德API | 自定义函数模块,调用自定义函数、for循环语句,字典取值、用列表append()提取数值存放列表,条件判断语句 | | 日志系统 | for循环语句,列表append(),split() | **参考资料** - [Flask安装及入门](https://blog.csdn.net/feng_zhiyu/article/details/81084528?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-17.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-17.control) - [Flask基础](https://blog.csdn.net/asd529735325/article/details/103011940?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161168358516780262594790%252522%25252C%252522scm%252522%25253A%25252220140713.130102334..%252522%25257D&request_id=161168358516780262594790&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-103011940.pc_search_result_no_baidu_js&utm_term=flask) # 四、编程功能的基本描述 **[完整代码](https://gitee.com/caimingli/python-project/tree/master/python_final)** :arrow_left: :bangbang: ### 1. 调用日志记录函数 ![调用日志记录函数](https://gitee.com/caimingli/python-project/raw/master/images/1.png) ### 2. 主要编程功能的基本描述 #### 2.1 首先自定义高德API的函数模块,调取地理编码、步行路径规划功能,把这两个封装成api函数模块 ![](https://gitee.com/caimingli/python-project/raw/master/images/2.png) #### 2.2 之后再建立一个实现主要功能的.py文件,在这个文件调用了日志记录,还有三个前端页面功能,分别是欢迎页,登录页和实现步行路径导航的前端输入查询功能,在前端导航页输入想要查询的起点和终点之后,为用户返回结果 - 功能代码 ![](https://gitee.com/caimingli/python-project/raw/master/images/3.png) - html页面代码 ![](https://gitee.com/caimingli/python-project/raw/master/images/4.png) #### 2.3 在goneneng这个自定义函数模块中,主要是通过从前面的gongnengye输入的结果调取了在api.py封装的地理编码geocode模块获取地理编码,同时获得起点和终点的地理编码。 ![](https://gitee.com/caimingli/python-project/raw/master/images/5.png) #### 2.4 调取步行路径规划的函数模块,然后通过results = walking(key,origin,destination)['route']['paths'][0]['steps']调取步行导航一部分结果,再通过 for循环遍历用append()提取出部分结果中的instruction这部分的数据,存放列表,之后结果返回前端页面 ![](https://gitee.com/caimingli/python-project/raw/master/images/3-1.png) **参考资料** - [pandas的数据处理](https://blog.csdn.net/bobin666/article/details/107183316?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161168323916780274144777%252522%25252C%252522scm%252522%25253A%25252220140713.130102334..%252522%25257D&request_id=161168323916780274144777&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-107183316.pc_search_result_no_baidu_js&utm_term=pandas%25E6%25A8%25A1%25E5%259D%2597%25E7%259A%2584%25E6%2595%25B0%25E6%258D%25AE%25E7%25BB%2593%25E6%259E%2584) - [列表](https://blog.csdn.net/xjc1632165904/article/details/89174526?ops_request_misc=&request_id=&biz_id=102&utm_term=%25E5%2588%2597%25E8%25A1%25A8&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-89174526.pc_search_result_no_baidu_js) - [封装函数](https://blog.csdn.net/hanbo6/article/details/80355795?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_utm_term-3&spm=1001.2101.3001.4242) - [调用日志记录函数](https://www.cnblogs.com/sebastiane-root/p/9541705.html) ### 实现前端页面代码 ![](https://gitee.com/caimingli/python-project/raw/master/images/7.png) 主要是由 index.css作为固定的外观模板样式, html通过这个css文件让前端页面外观更加整齐美观 | 知识点 | 调用模块|自定义函数 |列表|pandas数据处理|条件判断句| for循环语句| |-----------|--------|------------|------------|------------|------------|------------| | 时间成本(天)| 1 | 2 | 1 | 2 | 1 | 1 | | 比例 | 20% | 15% | 20% | 10% | 15% | 20% | **参考资料** - [html基础](https://www.runoob.com/html/html-basic.html) - [菜鸟教程中关于部署页面的HTML代码知识](https://www.runoob.com/html/html-tutorial.html) - [CSS 基础语法](https://www.w3school.com.cn/css/css_syntax.asp) - [CSS嵌入html](https://www.runoob.com/w3cnote/html-import-css-method.html) - [弹性盒模型Flexbox](https://developer.mozilla.org/en-US/docs/Glossary/Flex) - [iconfont SVG小图标](https://www.iconfont.cn/) # 五、云端项目部署的基本描述 ### 1. pythonanywhere部署基本步骤: - 上传我们的项目文件到pythonanywhere的file文件夹中,然后通过 Console操作面板进行对文件解压,解压之记得主要项目放在哪个文件夹中 - 然后点击Web建立我们的网页,选择flask,在进入时根据我们自己的电脑Python的版本软件选择。之后的话就是根据我们文件夹所在的目录进行修改。 - 修改之后点击上面的reload,刷新之后点击网址登录进网页。看能否成功。如果不成功的话可能是我们的文件资源路径错了,也可能是代码错了。根据自己的报错码,可以通过查找pythonwhere的help查找原因 ### 2. 页面链接与页面功能介绍 **ps:由于我开始在本地的图片是可以显示的,部署到云端之后不能显示,插入网站后的URL可以,但是太慢,所以我重新换更换了背景色。** - 首页面,进入登陆页:http://hahacai153.eu.pythonanywhere.com/ ![首页面](https://gitee.com/caimingli/python-project/raw/master/images/2-1.png) - 登陆页面 直接登陆即可:http://hahacai153.eu.pythonanywhere.com/dengluye ![登陆](https://gitee.com/caimingli/python-project/raw/master/images/2-2.png) - 导航前端输入查询结果页面:http://hahacai153.eu.pythonanywhere.com/daohangye_one ![查询](https://gitee.com/caimingli/python-project/raw/master/images/2-4.png) - 结果返回页:http://hahacai153.eu.pythonanywhere.com/daohangye ![结果](https://gitee.com/caimingli/python-project/raw/master/images/2-5.png) **这个页面可能跳不出来,因为它是基于前面的输入结果然后调取数据自定义的页面。所以可以通过点击网站去查询跳转** **参考资料** - [PythonAnywhere部署Flask项目](https://blog.csdn.net/weixin_45623528/article/details/105370431) - [基于flask框架的webapp在pythonanywhere上的快速部署](https://www.bilibili.com/video/BV127411c7qt?from=search&seid=1434910243403751725) ### 3. 步行导航功能数据流程图 ![](https://gitee.com/caimingli/python-project/raw/master/images/4-1.png) ### 4. 部署心得 - 在最开始部署的时候对操作台不熟悉,开始直接进入Python的页面,通过查找教程后,知道了操作台和Python界面是不同的,操作台是类似于电脑的cmd命令。 - 进入操作台之后,由于网络卡顿问题,第2次进入时一直不能输入命令,通过查找发现可能是开启的操作面板过多的问题,在consoles界面关闭另一个面板,重复刷新之后就好了。 - 之后在部署过程中遇到了一些问题,比如说经常遇到502,403等报错信息,查找官网的帮助和一些教程发现可能是代码问题或者是在开始建立web时,所插入的url错误。 # 六、学习/实践心得总结及感谢 - 这学期的python课程,虽然一直在走在出现bug,寻找bug,发现bug,找不出bug的路上,但是在遇到这些问题的过程中,我懂得了如何去利用网上的教程解决问题,或者询问老师同学,bug并不可怕,最重要的是我们要在出现问题的过程中总结经验。最后很感谢老师一个学期以来的教导,感谢那些帮助我解决问题的朋友们,还有那些编程知识网站。 - 独特非重复有效外连URL:17