Flask搭建弹幕视频网站(1)
说在前面
也不知道最后能不能完成网站,所以就想把这十多天来学习到的点点滴滴记录下来。学的越来越多,所谓全栈也是需要前端基础,越来越感受到压力,但是遇到一个问题就解决一个问题,慢慢习惯之后感觉也还行。说句实话,一年之前的高三寒假都没我现在这么忙。
补一下
网站已经做出来了(我的Github)
正文
1、明确需求,对于登录登出以及注册的页面,我用到了Flask框架,Flask-SQLAlchemy用于链接数据库、Flask-wtf用于制作登录表单。
2、各个框架使用
- (1)Flask
- 首先是视图函数的定义,我常常在请求里忘记加上
methods=['GET', 'POST']
用于标记对该网址的请求 - 对于Flask下的
render_template
函数,千万记得前端模板要放在templates文件夹里,也千万记得前面用return
返回,否者函数没有返回值,出错。 - 对于flash,建议在pycharm将templates文件夹标记为模板文件夹,这样在对模板文件夹进行编写的时候会有语法提示,比较方便打,比如对于flash函数在模板中的
get_flashed_messages()
要么少加括号,要么就是少加s。 - 对于redirect和url_for,这两个经常搭配使用的,我总结一下,就是redirect相当与return render_template一个模板,我没有去探求这两个异同,大概就是redirect可以加上一个
next=
的参数,用于干什么我也不知道,而return render_template则是在视图函数中用于给模板传参数的。url_for可以拼接网址,里面直接填入的是视图函数的函数名,因为这个我困扰大小写许久,最后才明白,后面可以怕拼接自己任意的定义的网址,只需加上对应的参数=我传入的参数。 - session这个我是又爱又恨,虽然我不知道更多用户登录之后会不会出现问题,但是基于目前状况,暂且先按我理解的,用于保存用户,如果用户退出则删掉session中的数据,否者我构造的其他人只要加上一个域名就可以登录,那太荒唐了,基于之前对爬虫的深入复习,我暂且对与cookie还是理解的,学习视频里的构造了一个装饰器,那个玩不来,自己探究,只要在视图函数内加上一个判断,判断session里的user是不是我传入的那个就好了
- 首先是视图函数的定义,我常常在请求里忘记加上
- (2)Flask-SQLAlchemy
- 这个的出现,是我不得不面对自己在学习python过程中最不愿意接触的两样东西:MySQL和类,但是困难总是要克服的,在学习过后,觉得这两个其实也就那样。
- 首先是考虑各种数据的需求,其次是外键的链接,到现在还是不是很清楚外键中backref参数的设置,暂且就认为是填本身的__tablename__,说到这,不得不提一下table后要跟上name,否者报错十分的不好找。其次我记忆外键链接的方法是一对多,那么一处为relationship,多处为ForeignKey,这里还有多对多的外键链接方式,我没有深入学习,所以不作阐述希望日后可以学习一下,但是由于对MySQL不够熟悉,所以可能要到几年后教到MySQL再回头看看,其实学一学MySQL,开始以为这东西是“上古时代”的产物,现在早已不是主流,但是越来越发现其实MySQL和C一样都给人一种可靠的感觉。
- 这里踩了一个雷,由于之前定义变量的时候本来是video_id,但是看网课手快打成了movie_id,后面直接改回来,出现问题,纠结一个下午,最后请教学长,看了MySQL里的表才发现错误,表里没有video_id这个东西,导致一直报错,提醒以后如果改了数据模型,一定要到重新建表,否则报错十分难找。
- 学到分页,我本以为会十分难搞,但是查阅资料得知可以直接使用SQLAlchemy里的paginate方法,在查阅数据库的时候直接进行分页,只要设置paginate里的page和per_page两个属性就可以了,再有就是导航栏的设置,其中我直接借鉴了网课的模板,但是我没有采用像网课一样的另外写一个html文件然后在各个文件里引用而是直接在每一个文件里都写一段,一来比较稳定,二来其实对于html文件的继承调用还不是很熟悉,大概了解一下就是类似函数一样的调用,使用macro方法···,没有深入研究。
- (3)Flask-wtf
- 这个也算是踩雷最多的一个点吧,总的就是与html不够协调,html5的功能强大,已经可以自己完成对错误信息的提醒,而且对于html5还只是稍微看两个基本语法,老是因为表单的各种各样问题而困扰。
- 第一个就是在自己定义的表单类里需要设置一个render_kw,里面设置"placeholder": "请输入用户名"和"required": False,这样可以在输入框里提示placeholder里的内容,其次,需要设置"required": False,这样才可以提示在··Required里的报错信息,否者html5过于智能的自动报错,虽然报的专业,但是千篇一律,不够个性化|>_<|。
- 第二个就是在render_kw里设置css的识别属性,虽然我还不会,但是大概知道有这么个功能,觉得render_kw里的内容就是正常写在标签里的内容。
- 这个是最坑的一个点,困扰了非常久,而且因为某位学长记性不好,忘记了这个大雷,我个。就是文件上传提交需要在表单的form标签里添加enctype="multipart/form-data",大概是什么文件上传协议什么的,如果不添加的话,那么上传到后端里的就只是文件名,一个字符串而已,然而我对一个字符串疯狂使用filename和save方法,编译器又一直告诉我没有这方法,我***,最后想起认真看看报错提示,终于明白了,上网百度一下知道添加上这个方法就好了。
Flask搭建弹幕视频网站(1)的更多相关文章
- Python Flask搭建一个视频网站实战视频教程
点击了解更多Python课程>>> Python Flask搭建一个视频网站实战视频教程 第1章 课程介绍 第2章 预备开发环境 第3章 项目分析.建立目录及模型规划 第4章 建立前 ...
- Flask 构建微电影视频网站(一)
Flask构建电影视频网站 Python MTV模型 Flask微内核 Flask扩展插件配置及使用方法 根据业务开发网站前后台功能 Flask结合MySQL数据库 你将可以独立开发网站 独立部署运维 ...
- Python flask 构建微电影视频网站☝☝☝
Python flask 构建微电影视频网站☝☝☝ 1.安装数据库连接依赖包 pip install flask-sqlalchemy 2.创建movie数据库 在CentOS虚拟机,进入MaridD ...
- Python flask 构建微电影视频网站✍✍✍
Python flask 构建微电影视频网站 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...
- Python Flask打造一个视频网站实战视频教程
下载链接:https://www.yinxiangit.com/607.html 目录: 本套课程从零基础讲解flask开发网站.涉及到的知识点包括:Python和pycharm的安装.urls和视图 ...
- Flask 构建微电影视频网站(八)
评论收藏及弹幕 实现电影评论添加及列表.数据查询实现统计播放量和评论量.jquery ajax实现收藏电影,flask结合redis消息队列实现电影弹幕,bug处理等功能. 电影评论-统计 class ...
- Flask 构建微电影视频网站(二)
搭建前台页面 前台布局搭建 将static中的文件拷贝到项目的static目录下 在app/templates/home下新建home.html,当作基础模板,并修改静态资源链接 <!docty ...
- Python Flask 构建微电影视频网站
前言 学完本教程,你将掌握: 1.学会使用整形.浮点型.路径型.字符串型正则表达式路由转化器 2.学会使用post与get请求.上传文件.cookie获取与相应.404处理 3.学会适应模板自动转义. ...
- Flask 构建微电影视频网站(四)
后台管理 实现后台管理系统使用flask sqlalchemy结合mysql数据库进行增删改查操作.分页的使用.路由装饰器定义.模板中变量调用.登录会话机制.上传文件.flask wtforms表单使 ...
随机推荐
- AT2390-[AGC016F]Games on DAG【状压dp,SG函数】
正题 题目链接:https://www.luogu.com.cn/problem/AT2390 解题思路 \(n\)个点的\(DAG\),\(m\)条边可有可无,\(1\)和\(2\)上有石头.求有多 ...
- mybatis-plus最新版代码生成器(Swagger3)
写项目想用mybatis-plus+swagger3,百度最新版代码生成器都是旧版的,且官网的配置过于简洁,所以手敲一份,在官网的基础上加了一堆配置,lombok,restful,mvc三层结构目录等 ...
- Go语言核心36讲(Go语言基础知识三)--学习笔记
03 | 库源码文件 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话). 这里的"其他代码" ...
- redis学习笔记-02 list列表类型命令
一.lpush key value1 value2 value3 value4(命令将一个或多个值插入到列表头部. 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作) lpush k1 ...
- bzoj4712 洪水(动态dp)
看起来很模板的一个题啊 qwq 但是我还是wei 题目要求的是一个把根节点和所有叶子断开连接的最小花费. 还是想一个比较\(naive\)的做法 我们令\(dp1[i]\)表示,在\(i\)的子树内, ...
- 流量治理神器-Sentinel的限流模式,选单机还是集群?
大家好,架构摆渡人.这是我的第5篇原创文章,还请多多支持. 上篇文章给大家推荐了一些限流的框架,如果说硬要我推荐一款,我会推荐Sentinel,Sentinel的限流模式分为两种,分别是单机模式和集群 ...
- python中常用的导包的方法和常用的库
python中常用的导包的方法 导入包和包名的方法:1.import package.module 2.from package.module import * 例一: ...
- RabbitMQ延时队列应用场景
应用场景 我们系统未付款的订单,超过一定时间后,需要系统自动取消订单并释放占有物品 常用的方案 就是利用Spring schedule定时任务,轮询检查数据库 但是会消耗系统内存,增加了数据库的压力. ...
- 【UE4】GAMES101 图形学作业2:光栅化和深度缓存
总览 在上次作业中,虽然我们在屏幕上画出一个线框三角形,但这看起来并不是那么的有趣.所以这一次我们继续推进一步--在屏幕上画出一个实心三角形,换言之,栅格化一个三角形.上一次作业中,在视口变化之后,我 ...
- 记一个非常诡异的关于 shared_ptr 的 bug
问题描述 今天写项目的时候遇见一个特别诡异的 bug,体现在在执行某条语句时,程序会莫名崩溃,并且给出的错误信息也非常难懂,只有一个malloc(): invalid size (unsorted)错 ...