Flask开发微电影网站(一)
1.用到的Flask知识
- 1.使用整形,浮点型,路径型,字符串型下正则表达式路由转化器
- 2.使用GET与POST请求,上传文件,cookie获取与响应,404处理
- 3.使用模板自动转义,定义过滤器,定义全局上下文处理器,Jinja2语法,包含,继承,定义宏
- 4.使用flask-wtf定义表单模型,字段类型,字段验证,视图处理表单,模板使用表单
- 5.使用flask-sqlachemy定义数据库模型,对数据进行增删查改,数据迁移
- 6.使用蓝图优化项目结构,实现微电影网站前台与后台业务逻辑
- 7.flask部署,安装编译Nginx,安装Mysql服务以及通过Nginx反向代理对视频流媒体限制下载速率,限制单个IP能发起的播放连接数
2.用到的视频技术
- 1.jwplayer播放器插件
- 2.视频限速限IP访问
- 3.FLV,MP4视频格式支持
- 4.Nginx点播实现
3.环境说明:
开发系统:Win 7(与数据库虚拟机以NAT方式连接,IP地址为:192.168.81.3)
python版本:3.6.3
开发工具:pycharm 专业版
数据库:MariaDB 5.5.56-Server
数据库所在系统:CentOS 7.4(IP地址为:192.168.81.10)
4.项目模型设计
- 使用Flask的蓝图Blueprint规划项目结构
- 使用Flask sqlalchemy定义和业务需求相关的数据库模型
- 结合MySQL数据库生成数据表
4.1前端搭建
实现前后台html布局页面搭建
实现Jinja2引擎语法
引入静态资源文件,404错误页面的处理
4.2后端开发
Flask sqlalchemy结合MySQL数据表进行增删改查操作
Flask数据分页查询,路由装饰器定义,模板中变量调用,登录会话机制,上传文件
Flask wtforms表单验证,Flask自定义应用上下文,自定义权限装饰器对管理系统进行基于角色权限的访问控制
Flask的多表关联查询,关键字模糊查询等
4.3网站部署
实现在CentOS服务器上搭建Nginx+MySQL+python环境
使用Nginx反向代理多端口多进程部署微电影网站
配置Nginx流媒体访问限制参数
5.前后台项目目录分析:
5.1 前台(home):
数据模型:models.py
表单处理:home/forms.py
模版目录:templates/home
静态目录:static
5.2 后台(admin):
数据模型:models.py
表单处理:admin/forms.py
模版目录:templates/admin
静态目录:static
整个项目目录如下图所示:

6.使用蓝图构建项目目录
6.1 什么是目录
一个应用中或跨应用制作组件和通用的模式,类似于Django中的app
6.2蓝图的作用
将不同的功能模块化
构建大型应用
优化项目结构
增强可读性,易于维护
6.3蓝图构建项目目录
6.3.1 定义蓝图
在home目录下的__init__.py文件中
from flask import Blueprint
home=Blueprint('home',__name__)
import app.home.views
在admin目录下的__init__.py文件中
from flask import Blueprint
admin=Blueprint('admin',__name__)
import app.admin.views
6.3.2 注册蓝图
修改app目录下的__init__.py文件
from app.admin import admin as admin_blueprint
from app.home import home as home_blueprint
app.register_blueprint(home_blueprint)
app.register_blueprint(admin_blueprint, url_prefix='/admin')
6.3.3 调用蓝图
home目录下的views.py文件
from . import home
@home.route("/register/", methods=["GET", "POST"])
def register():
pass
@home.route("/login/", methods=['GET', 'POST'])
def login():
pass
admin目录下的views.py文件
from . import admin
@admin.route('/')
def index():
pass
@admin.route('/login/', methods=['GET', 'POST'])
def login():
pass
Flask开发微电影网站(一)的更多相关文章
- Flask开发微电影网站(三)
页面完成后的最终布局 可以看到,页面共同的部分是顶部导航和底部导航 所以我们可以把页面顶部导航和底部导航部分单独定义一个文件home.html,然后让需要使用顶部导航和底部导航的页面都继承home.h ...
- Flask开发微电影网站(五)
后台管理页面是系统管理员登录后对网站进行管理的前端页面 后台登录页面,如下图所示 管理员登录后的页面,如下图所示 管理员登录后,在右上角显示的管理员信息,如下图所示 管理员登录后,在页面中间部分的左侧 ...
- Flask开发微电影网站(七)
1.后台管理之电影管理 1.1 定义电影表单 在app的admin目录的forms.py文件中,定义电影表单 # 电影表单 class MovieForm(FlaskForm): title = St ...
- Flask开发微电影网站(六)
1. 后台管理登录功能实现 1.1 后台管理页面登录表单LoginForm 在app的admin目录下创建forms.py文件,用来保存admin蓝图中需要使用到的表单 from flask_wtf ...
- Flask开发微电影网站(二)
1.安装数据库连接依赖包 pip install flask-sqlalchemy 2.创建movie数据库 在CentOS虚拟机,进入MaridDB数据库提示符,创建movie数据库 create ...
- Flask开发微电影网站(十)
1.后台管理之角色管理 1.1 角色管理之定义角色表单 在app的admin目录的forms.py文件中,定义角色表单 # 角色表单 class RoleForm(FlaskForm): name = ...
- Flask开发微电影网站(九)
1.后台管理之电影管理 1.1 电影管理之所有电影收藏列表 1.1.1 电影管理之电影收藏列表视图函数 在admin目录下的views.py文件中定义电影收藏列表视图函数 电影收藏列表视图函数需要被登 ...
- Flask开发微电影网站(八)
1.后台管理之电影预告管理 1.1 定义电影预告表单 在app的admin目录的forms.py文件中,定义电影预告表单 # 预告表单 class PreviewForm(FlaskForm): ti ...
- Flask开发微电影网站(四)
会员中心页面,如下图所示 用户登录后,修改密码页面,如下图所示 用户查看自己的评论页面,如下图所示 用户查看自己的登录日志页面,如下图所示 用户查看自己收藏的电影的页面,如下图所示 1. 定义用户主页 ...
随机推荐
- 解决javac和java命令在Mac OSX终端里的乱码问题
转自:https://www.surfchen.org/archives/710 java和javac在简体中文的Mac OSX的终端(Terminal.app)环境下,默认是以GBK编码的中文输出各 ...
- IP的种类与获取方式
IP 的种类与取得方式 接下来要跟大家谈一谈也是很容易造成大家困扰的一个部分,那就是 IP 的种类!很多朋友常常听到什么『真实IP, 实体 IP, 虚拟 IP, 假的 IP....』烦都烦死了-其实不 ...
- hadoop 数据倾斜
数据倾斜是指,map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有 ...
- init()和onEnter()方法的区别
init()和onEnter()这俩个方法都是CCNode的方法.其区别如下: 1.其被调用的顺序是先init(),后onEnter(). 2.init()在类的初始化时只会调用一次. 3.onEnt ...
- 分布式Ruby解决之道
其实用Druby很久了,今天需要完成一个进程数据同步的机制,我需要的不是运行速度快,不是用 linux / mac 下的扩展,而是独立,快速开发效率,方便最简单的Ruby环境可运行,可以吗? DRb( ...
- G1 GC技术解析
介绍 G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用.G1收集器是工作在堆内不同分区上的收集器,分区既可以是年轻代也可以是老年代 ...
- 简单poi创建execl
Workbook workbook = new HSSFWorkbook();// 创建一个Excel文件 Workbook workbook = new XSSFWorkbook();// 创建一个 ...
- oracle的for和i++
很长时间没用oracle的储存了,这次用到一次i++i++的sql语句:declarei_1 number(30) :=0;begin i_1 :=i_1+1;//i_1=1 insert into ...
- 前端技术之_CSS详解第四天
前端技术之_CSS详解第四天 一.第三天的小总结 盒模型box model,什么是盒子? 所有的标签都是盒子.无论是div.span.a都是盒子.图片.表单元素一律看做文本. 盒模型有哪些组成: wi ...
- Python_PyMySQL数据库操作
连接数据库: conn=pymysql.connect(host=,user=',charset='utf8') 建立游标: cur = conn.cursor() 创建一个名字叫 lj 的数据库: ...