Flask項目之手機端租房網站的實戰開發(二)

說明:該篇博客是博主一字一碼編寫的,實屬不易,請尊重原創,謝謝你們!python

接着上一篇博客繼續往下寫 :https://blog.csdn.net/qq_41782425/article/details/85613780mysql

目錄redis

一丶建立項目sql

二丶建立工程目錄(拆分manage.py)數據庫

三丶以開發環境進行項目測試flask


一丶建立項目

1 新建ihome_python項目文件夾api

2 在Pycharm中打開此文件 ,並配置項目解釋器(python2環境)瀏覽器

3 在工程目錄下建立manage.py做爲項目啓動文件緩存

  • step1 實現flask中最基本的工做
# coding:utf-8

from flask import Flask

app = Flask(__name__)

@app.route('/index')
def index():
    return "index page"


if __name__ == '__main__':
    app.run()
  • step2 配置mysql數據庫用於存儲用戶數據
class Config(object):
    """配置信息"""
    DEBUG = True
    SECRET_KEY = "cdtaogang**CSDN@uhduqw82981h"

    # 鏈接mysql數據庫
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/ihome_python"
    SQLALCHEMY_TRACK_MODIFICATIONS = True

app.config.from_object(Config)

db = SQLAlchemy(app)
  • step3 在本地mysql中建立ihome_python數據庫 
create database ihome_python charset=utf8;
  • step4 配置redis數據庫用於保存session信息以及緩存數據(由於flask框架默認將session數據存到cookie中),因此這裏須要利用flask_session這個工具包幫助咱們將flask存儲的session數據交給咱們管理,這樣就能夠將session數據存到redis數據庫中了
class Config(object):
    """配置信息"""
    DEBUG = True
    SECRET_KEY = "cdtaogang**CSDN@uhduqw82981h"

    # 鏈接mysql數據庫
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/ihome_python"
    SQLALCHEMY_TRACK_MODIFICATIONS = True

    # redis數據庫配置
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT = 6379


app.config.from_object(Config)

db = SQLAlchemy(app)

#建立redis數據庫鏈接對象
redis_store = redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)
  • step5 配置flask_session用於咱們操做session到redis數據庫(說明在Config類中再次建立redis數據庫鏈接,是由於在實際線上環境中,可能須要將session數據存到不一樣的服務器上)
# flask_session配置
    SESSION_TYPE = "redis"
    SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
    SESSION_USE_SIGNER = True  # 對cookie中session_id進行隱藏處理
    PERMANENT_SESSION_LIFETIME = 86400  # session數據的有效期,單位秒

# 利用flask_session, 將session數據保存到redis中
Session(app)
  • step6 開啓csrf防禦機制(導入flask_WTF中的CSRFProtect類)
# 爲flask補充csrf防禦
CSRFProtect(app)

二丶建立工程目錄(拆分manage.py)

1 拆分配置文件服務器

  • step1 在項目根目錄下建立一個config.py文件,將manage.py中的Config配置類放到該文件中

  • step2 工程實現後,有兩種運行環境,開發測試環境以及生成環境(線上環境),因此flask程序在運行時,就須要配置兩個配置類,一個是用於開發環境,另外一個用於生成環境
class DevelopmentConfig(Config):
    """開發環境配置信息"""
    DEBUG = True

class ProductConfig(Config):
    """生成環境配置信息"""
    pass
  • step3 將app對象設計爲工廠模式

  • step4 在config.py中建立配置映射
#構建配置映射關係
config_map = {
    "develop": DevelopmentConfig,
    "product": ProductConfig
}
  • step5 導入config中的config_map,經過調用create_app方法,建立app對象,將咱們須要的配置環境經過傳參的方式來決定是用開發環境仍是生產環境,在create_app方法中就按照指明的環境進行配置便可

  • step6 因最初建立的manage.py做爲項目啓動文件,因此咱們在manage文件中只保留啓動代碼便可,需將其他代碼抽離出去,保證manage文件中沒有其餘的代碼,項目根目錄下只須要保留啓動文件manage以及config配置文件,即在項目根目錄下建立一個ihome的python包,將create_app代碼放到這個ihome包的init文件中便可,隨後在ihome包下建立一個static目錄用於存放靜態文件,再建立一個models.py文件用於作數據庫的遷移

  • step7 在manage中建立並綁定app對象的代碼,放到init中,會致使沒法綁定create_app方法裏面的app,因此使用SQLAlchemy對象db提供的init_app方法,在create_app方法裏面對db進行初始化,這樣就解決了

  • step8 在models.py文件中導入數據庫對象db 
from ihome import db
  • step9 將manage文件中建立的redis數據庫鏈接對象放到init文件中,須要思考是否放在create_app方法中,由於最初在manage文件中建立的redis數據庫鏈接須要從config文件中拿去host以及port配置,因此咱們在全局聲明redis_store變量爲None,而後在方法中經過config_map獲取的環境配置類config_class,說白了也就是config中的開發類DevelopmentConfig,直接拿去類中咱們配置好的r鏈接redis數據庫的port和host

  • step10 對於Session(app)和CSRFProtect(app),不會用到這兩個對象來進行進一步操做,只是剛開始使用這兩個對象來初始化app,一個是爲了咱們將session數據存到redis數據庫,另外一個是爲了開啓CSRF防禦機制,因此直接放到create_app類便可
# 利用flask_session, 將session數據保存到redis中
    Session(app)

    # 爲flask補充csrf防禦
    CSRFProtect(app)
  • step11 建立藍圖,用於管理不一樣版本的視圖,在ihome核心目錄下建立一個api_1_0python包,表明1.0版本的藍圖,在這個藍圖下就能夠建立各類各樣的視圖了,在api_1_0藍圖下建立一個demo.py文件,將啓動文件manage中的視圖函數放到裏面
@app.route('/index')
def index():
    return "index page"
  • step12 在api_1_0包下的init文件中建立藍圖 

  • step13 在flask項目應用文件init中註冊藍圖 ,首先在init文件中經過絕對路徑導入api_1_0包,再經過app應用對象中的register_blueprint方法,註冊api_1_0包中的api藍圖名字,並定義url前綴地址爲/api/v1.0表示1.0版本
# 註冊藍圖
    app.register_blueprint(api_1_0.api, url_prefix="/api/v1.0")
  • step14 在建立工程時,可能會用到數據庫models文件,那麼就須要使用遷移插件,從flask_script中引入腳本命令管理對象,再從flask_migrate中導入遷移執行者Migrate,遷移命令解析人員Migratecommand

三丶以開發環境進行項目測試

  • step1 在Pycharm終端中,執行python manage.py runserver 默認端口,運行項目

在瀏覽器中成功渲染出index視圖函數返回的字符串,以下圖

  •  step3 回到Pycharm終端查看程序日誌,請求方式和地址以及狀態碼都是徹底正確,表明項目設計成功

相關文章
相關標籤/搜索