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框架的基礎配置我們已經完成了,接下來就是相關的功能開發。