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

整個項目目錄以下圖所示:html

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文件python

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文件sql

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
相關文章
相關標籤/搜索