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. 定义用户主页 ...
随机推荐
- Linux下进程通信方式(简要概述)
http://blog.sina.com.cn/s/blog_65c209580100u0ee.html (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先 ...
- Android特效专辑(四)——APP主页框架TabHost绑定ViewPager的替换者TabLayout
Android特效专辑(四)--APP主页框架TabHost绑定ViewPager的替换者TabLayout 现在很多app都在追求简单明了,功能又要强大,不过我还是喜欢之前的app风格,就是TabH ...
- java--jdk api中其他对象(System,Runtime,Calendar,Math,Random,Date)
转载请申明出处:http://blog.csdn.net/xmxkf/article/details/9796729 day18-01-其他对象(System) SystemDemo java.lan ...
- <<操作系统精髓与设计原理>>读书笔记(一) 并发性:互斥与同步(1)
<<操作系统精髓与设计原理>>读书笔记(一) 并发性:互斥与同步 并发问题是所有问题的基础,也是操作系统设计的基础.并发包括很多设计问题,其中有进程间通信,资源共享与竞争,多个 ...
- phantomjs 爬去动态页面
最近有一个小需求,需要根据用户输入的某宝的店铺 url,检查地址是否存在,并抓取店铺名称.某宝店铺 url 的 title 通常是 xx-xx-xx 的形式,中间的 xx 就是对应的店铺名称. 这个需 ...
- time元素与微格式/pubdate属性
首先来说下微格式,它是一种利用HTML的class属性来对网页添加诸如新闻事件发生的日期和时间.个人电话号码.企业邮箱之类的附加信息方法. time元素代表24小时中的某个时刻或某个日期,表示时刻时允 ...
- add two numbers(将两个链表相加)
You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...
- 6.3 Query 语句对系统性能的影响
我们重点分析实现同样功能的不同SQL 语句在性能方面会产生较大的差异的根本原因,并通过一个较为典型的示例来对我们的分析做出相应的验证. 为什么返回完全相同结果集的不同SQL 语句,在执行性能方面存在差 ...
- Centos7 时区的设置
Linux 系统(我特指发行版, 没说内核) 下大部分软件的风格就是不会仔细去考虑向后 的兼容性, 比如你上个版本能用这种程序配置, 没准到了下一个版本, 该程序已经不见了. 比如 sysvinit ...
- openssh升级的坑爹之路
安装Zlib http://zlib.net/zlib-1.2.8.tar.gz tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure --sha ...