说在前面

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

补一下

网站已经做出来了(我的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. YbtOJ#573-后缀表达【二分图匹配】

    正题 题目链接:https://www.ybtoj.com.cn/contest/115/problem/2 题目大意 给出一个包含字母变量和若干种同级操作符的后缀表达式.求一个等价的表达式满足该表达 ...

  2. P7444-「EZEC-7」猜排列【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P7444 题目大意 一个长度为\(n\)的排列,已知每个\(c_i\)表示那个排列中\(mex\)为\(i\)的区间 ...

  3. 基于 Ubuntu 21.04 BPF 开发环境全攻略

    本文地址:https://www.ebpf.top/post/ubuntu_2104_bpf_env 1. 系统安装 1.1 Vagrant Vagrant 是一款用于构建及配置虚拟开发环境的软件,基 ...

  4. 👊 Spring技术原理系列-从零开始教你SpringEL表达式使用和功能分析讲解指南(上篇)

    Spring EL表达式语言,这种语言jsp中学到的el,但是在整个spring之中其表达式语言要更加的复杂,而且支持度更加的广泛,最重要的是他可以进行方法的调用,对象的实例化,集合操作等等,但是唯一 ...

  5. C++ 多线程按顺序执行函数

    我们提供了一个类: public class Foo { public void first() { print("first"); } public void second() ...

  6. Java学习路线【转】

    Java学习路线[转] 第一阶段:JavaSE(Java基础部分) Java开发前奏 计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量的设置,程序的执行过程,相 ...

  7. keeplived高可用配置

    前提:关闭防火墙,关闭selinux 1.主备配置 主 vim keeplived-lb01.confglobal_defs { router_id LVS_01 } vrrp_instance VI ...

  8. 双指针之滑动窗口(长度最小的子数组 和 和为s的连续正数序列)

    双指针之滑动窗口 (长度最小的子数组:和为s的连续正数序列) 1, 什么时候使用? (与子数组/字符串 有关的题目)~如果给了某个具体值的target,即用滑动窗口 不然就双指针(一般做法,左边< ...

  9. js 手动实现 promise.all的功能

    在中高级面试中,实现一个promise.all是一个频率较高的面试题 首先分析下 promise.all(),(参考MDN) 接收一个promise的iterable类型(注:Array,Map,Se ...

  10. 【UE4 C++】UKismetSystemLibrary 源代码

    // Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" # ...