说在前面

也不知道最后能不能完成网站,所以就想把这十多天来学习到的点点滴滴记录下来。学的越来越多,所谓全栈也是需要前端基础,越来越感受到压力,但是遇到一个问题就解决一个问题,慢慢习惯之后感觉也还行。说句实话,一年之前的高三寒假都没我现在这么忙。

补一下

网站已经做出来了(我的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)的更多相关文章

  1. Python Flask搭建一个视频网站实战视频教程

    点击了解更多Python课程>>> Python Flask搭建一个视频网站实战视频教程 第1章 课程介绍 第2章 预备开发环境 第3章 项目分析.建立目录及模型规划 第4章 建立前 ...

  2. Flask 构建微电影视频网站(一)

    Flask构建电影视频网站 Python MTV模型 Flask微内核 Flask扩展插件配置及使用方法 根据业务开发网站前后台功能 Flask结合MySQL数据库 你将可以独立开发网站 独立部署运维 ...

  3. Python flask 构建微电影视频网站☝☝☝

    Python flask 构建微电影视频网站☝☝☝ 1.安装数据库连接依赖包 pip install flask-sqlalchemy 2.创建movie数据库 在CentOS虚拟机,进入MaridD ...

  4. Python flask 构建微电影视频网站✍✍✍

    Python flask 构建微电影视频网站  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大 ...

  5. Python Flask打造一个视频网站实战视频教程

    下载链接:https://www.yinxiangit.com/607.html 目录: 本套课程从零基础讲解flask开发网站.涉及到的知识点包括:Python和pycharm的安装.urls和视图 ...

  6. Flask 构建微电影视频网站(八)

    评论收藏及弹幕 实现电影评论添加及列表.数据查询实现统计播放量和评论量.jquery ajax实现收藏电影,flask结合redis消息队列实现电影弹幕,bug处理等功能. 电影评论-统计 class ...

  7. Flask 构建微电影视频网站(二)

    搭建前台页面 前台布局搭建 将static中的文件拷贝到项目的static目录下 在app/templates/home下新建home.html,当作基础模板,并修改静态资源链接 <!docty ...

  8. Python Flask 构建微电影视频网站

    前言 学完本教程,你将掌握: 1.学会使用整形.浮点型.路径型.字符串型正则表达式路由转化器 2.学会使用post与get请求.上传文件.cookie获取与相应.404处理 3.学会适应模板自动转义. ...

  9. Flask 构建微电影视频网站(四)

    后台管理 实现后台管理系统使用flask sqlalchemy结合mysql数据库进行增删改查操作.分页的使用.路由装饰器定义.模板中变量调用.登录会话机制.上传文件.flask wtforms表单使 ...

随机推荐

  1. MyBatis 面试复习整理

    MyBatis MyBatis 是一款优秀的ORM(对象关系映射)框架,可以通过对象和数据库之间的映射,将程序中的对象自动存储到数据库中.它内部封装了 JDBC ,使开发者只需要关注 SQL语句本身, ...

  2. tomcat unkonwhost

    服务器能ping通域名,tomcat死活不行,重启tomcat解决

  3. 寻找最佳路径(ArcPy实现)

    一.背景 随着社会经济发展需求,公路的重要性日益提高.在一些交通欠发达的地区,公路建设迫在眉睫.如何根据实际地形情况设计出比较合理的公路规划,是一个值得研究的问题. 二.实验目的: (1)通过练习,熟 ...

  4. Spatial Analyst 工具-数学分析

    数学分析 # Process: Abs arcpy.gp.Abs_sa("", 输出栅格) # Process: Exp arcpy.gp.Exp_sa("", ...

  5. 简单几步零成本使用Vercel部署OneIndex 无需服务器搭建基于OneDrive的网盘

    前提 你需要一个OneDrive账号,必须管理员开放API 需要已安装Node.js 拥有Github账号,没有就注册一个 魔法上网环境(看情况) 注册应用 登录https://portal.azur ...

  6. 重学c#系列——字典(十一)

    前言 重学c#系列继续更新,简单看一下字典的源码. 看源码主要是解释一下江湖中的两个传言: 字典foreach 顺序是字典添加的顺序 字典删除元素后,字典顺序将会改变 正文 那么就从实例化开始看起,这 ...

  7. Go语言核心36讲(Go语言进阶技术一)--学习笔记

    07 | 数组和切片 我们这次主要讨论 Go 语言的数组(array)类型和切片(slice)类型. 它们的共同点是都属于集合类的类型,并且,它们的值也都可以用来存储某一种类型的值(或者说元素). 不 ...

  8. 关于takin-data,你想知道的都在这里(二)trace日志篇

    相信大家在使用takin的过程中都见到过压测过程中实时展示的请求流量明细和请求详情了吧,像这样: 还有这样: 这样的请求流量明细和调用链详情是怎么实现的呢,今天就带大家探究下. 在前面的启动命令篇(h ...

  9. Linux过来人帮你理清学习思路

    很多同学接触linux不多,对linux平台的开发更是一无所知. 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机it行业从业人员,="" 掌握linux是一种很重要的 ...

  10. 洛谷 P5664 [CSP-S2019] Emiya 家今天的饭

    链接: P5664 题意: 给出一个 \(n*m\) 的矩阵 \(a\),选 \(k\) 个格子(\(1\leq k\leq n\)),每行最多选一个,每列最多选\(⌊\dfrac k2⌋\) 个,同 ...