# python-final-project **Repository Path**: jokey-li/python-final-project ## Basic Information - **Project Name**: python-final-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-24 - **Last Updated**: 2021-01-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python期末项目技术文档 ## 项目名称:基于Python的Flask Web数据可视化平台 本项目借助Python Flask,搭建了一个视频储存网站。 ## 问题表述 现在很多喜欢看电影、电视剧等等的人,但是现在的视频网站、app的版权并不统一,导致很多人看电影、电视剧需要下载很多不同的视频软件。 ## 用户画像/价值主张画布 - 用户画像 ![画像](img/yonghu.png) - 价值主张画布 通过python flask、request, render_template等功能,将上传到网站上的内容储存起来,并开启搜索功能。 ## 解决方案表述 ### 项目规划 主要运用: url_for:构造不同的url Flask框架:制作web页面 sqlite3:用于储存视频 ## 编程功能的基本描述 ### 1.连接数据库 ``` # 连接到一个数据库名为 records 的数据库,如果存在则直接连接,如果不存在则创建 data_base=sqlite3.connect('reocords', check_same_thread=False) # 设置数据库光标,你之后所有对数据库进行的操作都是通过光标来执行的 cursor=data_base.cursor() # 创建一个表名为 uploads 的数据库表,如果这个表不存在的话 # 后面括号里面的内容为这个表的属性,属性与属性之间用 , 隔开,属性名与属性类型之间用 空格 隔开,如果不写类型的话,默认 为text类型 cursor.execute('create table if not exists uploads(info text)') # 数据库的提交,对数据进行增删改后都需要进行数据库的提交 data_base.commit() ``` ### 2.上传文件搜索 ``` @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'GET': records=getrecords() # print(records) return render_template('index.html',records=records[::-1]) else:#post方法 scon = request.form.get('scon') target = [] # 搜索云端是否有该文件,罗列所有相关的 records=getrecords() for record in records: # print(record['filename']) if scon in record['filename']: target.append(record) if target==[]:#没有找到相关文件 flash('没有找到相关文件!') return render_template('index.html',records=records[::-1]) else: return render_template('index.html',records=target[::-1]) ``` ``` @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'GET': records=getrecords() # print(records) return render_template('index.html',records=records[::-1]) else:#post方法 scon = request.form.get('scon') target = [] # 搜索云端是否有该文件,罗列所有相关的 records=getrecords() for record in records: # print(record['filename']) if scon in record['filename']: target.append(record) if target==[]:#没有找到相关文件 flash('没有找到相关文件!') return render_template('index.html',records=records[::-1]) else: return render_template('index.html',records=target[::-1]) ``` ``` @app.route('/upload', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': file = request.files['file'] if file: filename = file.filename.rsplit('.', 1)[0] filetype = file.filename.rsplit('.', 1)[1] filename = filename.replace(' ','') # 将文件名中的空格去除 filename = filename.replace('.','-') # 去除文件中的. filename = filename+'.'+filetype # 解决命名冲突的问题 records=getrecords() for record in records: if filename==record['filename']: flash('该文件已经存在!') return render_template('upload.html') # ---------- file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) date = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) record = {"filename": filename, "date": date} # print(record) # 更新本地记录 cursor.execute('insert into uploads (info) VALUES (\"%s\")'%(record)) data_base.commit() return redirect(url_for('index')) return render_template('upload.html') ``` ### 3.架设flask框架,添加网页样式 用falsk架设出基本框架,然后太添加基本的网页布局。 ### 4.Pythonanywhere部署 使用Pythonanywhere进行云端部署,完成Python网站项目。 | | 学习成本 | 项目占比 | |---|---|---| | flask框架 | 一个月 | 30% | | 数据存储 | 一周 | 20% | | CSS 、html5 | 五天 | 10% | | python函数 | 一个月 | 20% | | Pythonanywhere部署 | 两天 | 10% | | 数据库创建与连接 | 三天 | 10% | 具体可在此学习 [Web前端HTML5&CSS3初学者零基础入门全套完整版](https://www.bilibili.com/video/BV1XJ411X7Ud?from=search&seid=4128277337374761586) [python函数](https://www.bilibili.com/video/BV1At411s7q1?from=search&seid=813218865522501876) [pythonanywhere部署步骤 - 简书](https://www.jianshu.com/p/f33e0ea67575?utm_campaign=hugo) [2020年史上最强Flask框架 Flask从入门到精通](https://www.bilibili.com/video/BV1bC4y1a7FA?from=search&seid=14102418770792939878) ## 网站页面 - [首页](http://lijiahao.pythonanywhere.com/) - [上传页](http://lijiahao.pythonanywhere.com/upload) - [搜索页](http://lijiahao.pythonanywhere.com/) - [《够了》](http://lijiahao.pythonanywhere.com/player/%E7%BA%AF%E4%BA%AB%E9%99%86%E7%87%83VSUglyZ%E3%80%8A%E5%A4%9F%E4%BA%86%E3%80%8B-%E6%B5%81%E7%95%85360P.mp4) - [《白色》](http://lijiahao.pythonanywhere.com/player/%E7%99%BD%E5%AE%89-%E7%99%BD%E8%89%B2-%E6%B5%81%E7%95%85360P.mp4) - [《外套》](http://lijiahao.pythonanywhere.com/player/%E7%BA%AF%E4%BA%AB%E5%91%A8%E6%A2%93%E5%80%A9VSMAC%E3%80%8A%E5%A4%96%E5%A5%972-0%E3%80%8B-%E6%B5%81%E7%95%85360P.mp4) - [《动画》](http://lijiahao.pythonanywhere.com/player/SampleVideo_1280x720_5mb.mp4) 后面添加视频还会有新的页面 ## 部署心得 - 1、注册pythonanywhere账号:前往[pythonanywhere](https://www.pythonanywhere.com/user/lijiahao/)注册账号。 - 2、上传压缩包:在本地将整个项目的文件夹压缩为zip格式,然后通过“Upload a file”上传至pythonanywhere。 - 3、创建web应用:点击Web标签,找到“Add a new web app”,选择flask,选择对应的python版本,设置路径。 - 4、返回SWGI configuration file修改相应路径,然后进入后将最后一行代码改为-from app import app as application,最后保存,点击reload按钮,部署完成 ## 心得总结及感谢 ### 心得 - 其实,对我们来说,这个项目,算得上是一个比较艰难的项目,虽然原理很简单,但是在实践的过程中总会出现各种各样的问题,而一个问题的解决,往往离不开教程网站以及同学、师兄师姐、老师们的帮助。虽然过程并不美好,但是也感觉自己学到了很多,也收获了很多东西,以后必定要更加努力学习代码,争取做出更多好的项目。 ### 在此感谢 - 感谢许智超老师和游鸽老师的悉心教导,是你们的教导让我对代码从懵懂到渐渐了解,以及同学们、师兄师姐们的热心帮助,正是因为你们的帮助,我才能更好的把项目做好,也感谢各位互评的朋友们,对我的项目提出自己的建议,打出合适的分数,谢谢大家。 - 也再次谢谢这些对我帮助很大的网站: [许智超老师的博客](https://www.cnblogs.com/xuzhichao/p/11707930.html) [processon](https://www.processon.com/) [pythonanywhere](https://www.pythonanywhere.com/) [pythonanywhere部署](https://blog.csdn.net/qq_15260769/article/details/83182185) [flask项目搭建](https://blog.csdn.net/asd529735325/article/details/103011940?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-10.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-10.control) [python可视化](https://gitee.com/godxia/python_map_visualization?_from=gitee_search) [菜鸟教程](https://www.runoob.com/try/try.php?filename=trycss3_gradient-linear_ltr) b站教程: [Web前端HTML5&CSS3初学者零基础入门全套完整版](https://www.bilibili.com/video/BV1XJ411X7Ud?from=search&seid=4128277337374761586) [python函数](https://www.bilibili.com/video/BV1At411s7q1?from=search&seid=813218865522501876) [pythonanywhere部署步骤 - 简书](https://www.jianshu.com/p/f33e0ea67575?utm_campaign=hugo) [2020年史上最强Flask框架 Flask从入门到精通](https://www.bilibili.com/video/BV1bC4y1a7FA?from=search&seid=14102418770792939878)