天天看點

Flask之項目整合 注意:使用Manage之後要運作項目必須在指令行視窗輸入語句:python manage.py runserver   才能運作整個flask項目

1、首先建立出項目的目錄架構

Flask之項目整合 注意:使用Manage之後要運作項目必須在指令行視窗輸入語句:python manage.py runserver   才能運作整個flask項目

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個檔案:

Flask之項目整合 注意:使用Manage之後要運作項目必須在指令行視窗輸入語句:python manage.py runserver   才能運作整個flask項目

      其中__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檔案是項目的視圖檔案

Flask之項目整合 注意:使用Manage之後要運作項目必須在指令行視窗輸入語句:python manage.py runserver   才能運作整個flask項目

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項目的結構整合完畢,你可以編寫視圖、模型和前端代碼了

繼續閱讀