1、首先建立出項目的目錄架構
2、建立好目錄架構之後開始建立項目檔案
在airresourse目錄中包含: __init__.py檔案和建立的接口檔案
在__init__.py檔案中
# 導入藍圖以及api接口子產品
from flask import Blueprint
from flask_restful import Api
# 建立api接口
api_main = Blueprint("api", __name__)
api = Api(api_main)
from . import apiproject
在main目錄下建立3個檔案:
其中__init__.py檔案中為整個項目的藍圖建立
from flask import Blueprint
# 建立藍圖
main = Blueprint("main", __name__)
# 在目前目錄下導入views檔案
from . import views
注意:在目前目錄下的檔案中要使用本目錄的__init__.py中的設定以及變量,就必須在__init__.py檔案中導入改檔案
forms.py檔案是自己為項目寫的表單類
# 導入表單表單字段子產品
import wtforms
# 導入表單子產品
from flask_wtf import FlaskForm
# 導入驗證子產品
from wtforms import validators
views.py檔案是項目的視圖檔案
app的__init__.py檔案中
from flask import Flask # 導入Flask
from flask_wtf import CSRFProtect # 導入csrf
from flask_cache import Cache # 導入cache緩存
from flask_sqlalchemy import SQLAlchemy # 導入sqlalchemy使用資料庫
import pymysql
pymysql.install_as_MySQLdb() # mysql資料庫設定
csrf = CSRFProtect()
models = SQLAlchemy()
cache = Cache()
# 編寫app應用的建立函數
def create_app():
app = Flask(__name__) # 建立應用
app.config.from_object("settings.DebugConfig") # 加載配置
# 惰性加載
csrf.init_app(app)
models.init_app(app)
cache.init_app(app)
# 導入藍圖以及api接口
from .main import main as main_blurprint
from .apiresourse import api_main
# 注冊藍圖和api接口,為api接口設定路由
app.register_blueprint(main_blurprint)
app.register_blueprint(api_main, url_prefix="/api")
# 傳回建立的app
return app
在models.py檔案中導入app中建立的models
from app import models
# 建立的基礎模型類,之後的所有模型都要繼承此類
class BaseModel(models.Model):
__abstract__ = True
id = models.Column(models.Integer, primary_key=True, autoincrement=True)
def save(self):
db = models.session
db.add(self)
db.commit()
def delete_obj(self):
db = models.session
db.delete(self)
db.commit()
在項目的配置檔案即settings.py檔案中
import os
# 設定目前目錄為工作目錄
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
# 建立設定的基類
class BaseConfig(object):
# SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:[email protected]/flask_db"
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = True
SECRET_KEY = "hyz123"
# CACHE_TYPE = "simple"
class DebugConfig(BaseConfig):
"""項目開發調試過程中啟用的配置,開啟DEBUG"""
DEBUG = True
SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(BASE_DIR, "student.sqlite")
class OnlineConfig(BaseConfig):
"""項目開發完成之後上線啟用的配置,關閉DEBUG"""
DEBUG = False
SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(BASE_DIR, "student.sqlite")
項目的運作檔案manage.py檔案中
from flask_script import Manager
from flask_migrate import Migrate
from flask_migrate import MigrateCommand
# 猴子子產品,将不契合協程的代碼變為契合協程代碼
from gevent import monkey
monkey.patch_all()
from app import create_app, models
# 導入建立應用的函數來建立應用app
app = create_app()
manage = Manager(app)
# 使用Migrate來在指令行視窗建立資料庫
migrate = Migrate(app, models)
manage.add_command("db", MigrateCommand)
# 使用pywsgi運作項目,添加runserver_gevent指令
@manage.command
def runserver_gevent():
from gevent import pywsgi
server = pywsgi.WSGIServer(("127.0.0.1", 5000), app)
server.serve_forever()
# 運作項目
if __name__ == '__main__':
manage.run()
注意:使用Manage之後要運作項目必須在指令行視窗輸入語句:python manage.py runserver
才能運作整個flask項目
至此,flask項目的結構整合完畢,你可以編寫視圖、模型和前端代碼了