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开发微电影网站(一)的更多相关文章

  1. Flask开发微电影网站(三)

    页面完成后的最终布局 可以看到,页面共同的部分是顶部导航和底部导航 所以我们可以把页面顶部导航和底部导航部分单独定义一个文件home.html,然后让需要使用顶部导航和底部导航的页面都继承home.h ...

  2. Flask开发微电影网站(五)

    后台管理页面是系统管理员登录后对网站进行管理的前端页面 后台登录页面,如下图所示 管理员登录后的页面,如下图所示 管理员登录后,在右上角显示的管理员信息,如下图所示 管理员登录后,在页面中间部分的左侧 ...

  3. Flask开发微电影网站(七)

    1.后台管理之电影管理 1.1 定义电影表单 在app的admin目录的forms.py文件中,定义电影表单 # 电影表单 class MovieForm(FlaskForm): title = St ...

  4. Flask开发微电影网站(六)

    1. 后台管理登录功能实现 1.1 后台管理页面登录表单LoginForm 在app的admin目录下创建forms.py文件,用来保存admin蓝图中需要使用到的表单 from flask_wtf ...

  5. Flask开发微电影网站(二)

    1.安装数据库连接依赖包 pip install flask-sqlalchemy 2.创建movie数据库 在CentOS虚拟机,进入MaridDB数据库提示符,创建movie数据库 create ...

  6. Flask开发微电影网站(十)

    1.后台管理之角色管理 1.1 角色管理之定义角色表单 在app的admin目录的forms.py文件中,定义角色表单 # 角色表单 class RoleForm(FlaskForm): name = ...

  7. Flask开发微电影网站(九)

    1.后台管理之电影管理 1.1 电影管理之所有电影收藏列表 1.1.1 电影管理之电影收藏列表视图函数 在admin目录下的views.py文件中定义电影收藏列表视图函数 电影收藏列表视图函数需要被登 ...

  8. Flask开发微电影网站(八)

    1.后台管理之电影预告管理 1.1 定义电影预告表单 在app的admin目录的forms.py文件中,定义电影预告表单 # 预告表单 class PreviewForm(FlaskForm): ti ...

  9. Flask开发微电影网站(四)

    会员中心页面,如下图所示 用户登录后,修改密码页面,如下图所示 用户查看自己的评论页面,如下图所示 用户查看自己的登录日志页面,如下图所示 用户查看自己收藏的电影的页面,如下图所示 1. 定义用户主页 ...

随机推荐

  1. hibernate 动态多数据库

    最近老师给了一个任务,需求是这样的 服务器A上有一张表,里面存放了若干个服务器的信息,表的字段包括: private int id; private String serverName; privat ...

  2. struts2 easyui实现datagrid的crud

    最近两天因为项目需要,接触了easyui,要用它的datagrid实现crud.第一次做,花了一天时间才完成所有功能,昨天做另外一个模块,同样的功能只用了两个小时. 现在把第一次做datagrid时遇 ...

  3. 【62】Spring总结之bean(3)

    Spring核心机制:依赖注入 Java应用(从applets的小范围到全套n层服务端企业应用)是一种典型的依赖型应用,它就是由一些互相适当地协作的对象构成的.因此,我们说这些对象间存在依赖关系.加入 ...

  4. How tomcat works 读书笔记十三 Host和Engine

    Host Host是Context的父容器.如果想在一个tomcat上部署多个context就需要使用Host了.上下文容器的父容器是主机,但是可能有一些其它实现,没有必要的时候也可以忽略.不过在实践 ...

  5. UITableView设置单元格选中后只显示一个打勾的三种简单方法(仅供参考)

    1.第一种方法:先定位到最后一行,若选中最后一行直接退出,否则用递归改变上次选中的状态,重新设置本次选中的状态. - (UITableViewCell*)tableView:(UITableView* ...

  6. linux中syscall调用号查看

    可以用locate查找: locate unistd_32 //或者 locate unistd_64 以下是本猫在ubuntu下返回的结果: /usr/src/linux-headers-3.16. ...

  7. 自定义UICollectionViewLayout 布局实现瀑布流

    自定义 UICollectionViewLayout 布局,实现瀑布流:UICollectionView和UICollectionViewCell 另行创建,这只是布局文件, 外界控制器只要遵守协议并 ...

  8. 小议 HashMap

    大家都知道,在Java里对对象的操作是基于引用的.而当我们需要对一组对象操作的时候,就需要有接收这一组引用的容器.平时我们最常用的就是数组.在Java里可以定义一个对象数组来完成许多操作.可是,数组长 ...

  9. AS3中的mouseEnabled与mouseChild

    InteractiveObject类的一个属性,InteractiveObject类是用户可以使用鼠标和键盘与之交互的所有显示对象的抽象基类.我们不能直接实例化InteractiveObject类.m ...

  10. 【转载】解决nginx负载均衡的session共享问题

    https://blog.csdn.net/u012081441/article/details/71787164 之前有写过ubuntu环境下搭建nginx环境,今天来谈一下nginx sessio ...