1. 程式人生 > 實用技巧 >01-flask電商專案開發基礎配置

01-flask電商專案開發基礎配置

本專案前端採用vue-cli的腳手架,後端採用Flask的Web框架。專案通過完成使用者管理、許可權管理、商品管理、訂單管理、統計管理等功能,綜合了前後端的知識,希望使大家都能受益。

1、使用到的技術如下所示。

前端技術:

  • Vue       前端框架
  • Element-UI      UI框架
  • Axios      傳送請求
  • Echarts       繪製圖表

後端技術:

  • Python主流語言
  • flask web框架
  • MySQL儲存主要資料
  • Redis儲存快取資料

2、專案需求

3、vscode建立flask基本框架。

vscode可以網上下載安裝,也可以可以關注公眾號:呆呆的clearlie,回覆:vscode即可下載。

開啟VSCode,建立一個新的資料夾,命名為flask_shop

在python控制檯中建立虛擬環境:mkvirtualenv shop_env。將環境切換為虛擬環境,在這裡可能會出現相關bug,可參考:https://www.cnblogs.com/clearlie/p/13186447.html

切換到虛擬環境後,在控制檯輸入:pip install flask 安裝flask框架。

在flask_shop資料夾下面建立一個manager.py檔案,在檔案中輸入以下程式碼。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
return "hello world" if __name__ == "__main__":
app.run()

執行該資料夾,將網址輸入到瀏覽器中,看到"hello world"輸出的結果,說明一切準備就緒,可以進行接下來的操作。

4、資料庫引數的配置。

我們配置的是MYSQL資料庫,其連線方式如下:

from flask import Flask
import os app = Flask(__name__) class Config:
# 配置MySQL引數
MYSQL_DIALECT = 'mysql'
MYSQL_DIRVER = 'pysql'
MYSQL_NAME = 'root'
MYSQL_PWD = ""
MYSQL_HOST = 'localhost'
MYSQL_PORT = ''
MYSQL_DB = 'shop_env'
MYSQL_CHARSET = 'utf8mb4' SQLALCHEMY_DATABASE_URI = f'{MYSQL_DIALECT}+{MYSQL_DIRVER}://{MYSQL_NAME}:{MYSQL_PWD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DB}?charset={MYSQL_CHARSET}'
SQLALCHEMY_TRACK_MODIFICATIONS = True # 應用於加密
SECRET_KEY = os.urandom(16)
DEBUG = True app.config_from_object(Config) @app.route("/") def index():
return "hello world" if __name__ == "__main__":
app.run()

5、安裝基本的flask外掛。

在控制檯輸入以下命令安裝,同時初始化資料庫。

pip install flask_sqlalchemy

pip install flask_script

pip isntall flask_migrate

在manager.py檔案中匯入相關的外掛函式,並進行初始化,新增程式碼如下:

from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager app = Flask(__name__) class Config:
  ...
app.config.from_object(Config) db = SQLAlchemy(app) manager = Manager(app)
Migrate(app, db)
manager.add_command('db', MigrateCommand)

...

6、拆分專案結構

接下來我們將manager.py裡的內容進行拆分,拆分程式碼的目的在於是不同的程式碼位於不同的檔案裡,各司其職。

在FLASK_SHOP新建一個flask_shop的python包和config的python檔案,在flask_shop下再建一個user的python包和檢視view.py檔案,python包即含一個__init__.py初始化檔案的資料夾。其相關檔案如下:

把之前的資料庫配置程式碼移到配置檔案config.py裡,如下所示:

import os

class Config:
# 配置MySQL引數
MYSQL_DIALECT = 'mysql'
MYSQL_DIRVER = 'pysql'
MYSQL_NAME = 'root'
MYSQL_PWD = ""
MYSQL_HOST = 'localhost'
MYSQL_PORT = ''
MYSQL_DB = 'shop_env'
MYSQL_CHARSET = 'utf8mb4' SQLALCHEMY_DATABASE_URI = f'{MYSQL_DIALECT}+{MYSQL_DIRVER}://{MYSQL_NAME}:{MYSQL_PWD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DB}?charset={MYSQL_CHARSET}'
SQLALCHEMY_TRACK_MODIFICATIONS = True # 應用於加密
SECRET_KEY = os.urandom(16) # 定義一個開發模式的類
class DevelopmentConfig(Config):
DEBUG = True class ProductionConfig(Config):
pass config_map = {
"develop": DevelopmentConfig,
"product": ProductionConfig,
}

在配置檔案中我們新增了兩個類,一個開發模式,一個生產模式,同時使用config_map字典進行儲存。

manager.py的檔案主要用於撰寫控制操作程式,程式碼更新如下:

from flask_shop import create_app
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from flask_shop import db app = create_app("develop") manager = Manager(app)
Migrate(app, db)
manager.add_command('db', MigrateCommand) if __name__ == "__main__":
app.run()

flask_shop初始化檔案下的程式碼如下:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config_map db = SQLAlchemy() def create_app(config_name):
app = Flask(__name__)
obj = config_map.get(config_name)
app.config.from_object(obj)
db.init_app(app) # 引入註冊藍圖
from flask_shop.user import user
app.register_blueprint(user) return app if __name__ == "__main__":
app.run()

user的初始化檔案如下:

from flask import Blueprint

user = Blueprint('user', __name__,  url_prefix='/user')
from . import view

檢視函式view.py的程式碼如下:

from flask_shop.user import user

@user.route("/")
def user():
return "hello, boy!!!"

執行manager.py檔案,在瀏覽器輸入http://127.0.0.1:5000/user/,可以看到以下結果:

現在flask框架的基礎配置我們已經完成了,接下來就是相關的功能開發。