Flask笔记-构建mvc分层结构及优化
生活随笔
收集整理的這篇文章主要介紹了
Flask笔记-构建mvc分层结构及优化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大體上的結構如下:
這里舉個例子:
程序運行截圖如下:
打印個
文件結構如下:
源碼如下:
account.py
from application import dbclass Account(db.Model):id = db.Column(db.Integer, primary_key = True)name = db.Column(db.String(50))password = db.Column(db.String(50))user.py
# coding: utf-8 from application import dbclass User(db.Model):__tablename__ = 'user'Host = db.Column(db.String(60, 'utf8_bin'), primary_key=True, nullable=False, server_default=db.FetchedValue())User = db.Column(db.String(32, 'utf8_bin'), primary_key=True, nullable=False, server_default=db.FetchedValue())password_last_changed = db.Column(db.DateTime)password_lifetime = db.Column(db.SmallInteger)base_setting.py
#公用配置 DEBUG = True SQLALCHEMY_ECHO = False SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_ENCODING = "utf8mb4" SECRET_KEY = "it1995123456"local_setting.py
#本地開發配置文件 from config.base_setting import * #這樣的話就可以覆蓋配置了 SQLALCHEMY_TRACK_MODIFICATIONS = True SQLALCHEMY_DATABASE_URI = "mysql://root:XXXXXXXXXX@XXX.XXX.XXX.XXX/mytest" SECRET_KEY = "12345IT1995"production_setting.py
#生產環境配置文件 from config.base_setting import * DEBUG = Falseindex.py
from flask import Blueprint,render_template from common.models.user import User from common.models.account import Account index_page = Blueprint( "index_page",__name__ )@index_page.route("/") def index():context = {}#result = User.query.all()result = Account.query.all()context['result'] = resultreturn render_template("index.html", **context)Auth.py
from application import app@app.before_request def before_request():app.logger.info("----------before_request----------")return@app.after_request def after_request(response):app.logger.info("----------after_request----------")return responseerrorHandler.py
from application import app@app.errorhandler(404) def error_404(e):return "404 not found"layout.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>模版</title> </head> <body> {% block content %} {% endblock %} </body> </html>index.html
{% extends "common/layout.html" %} {% block content %} <p> flask 查詢數據庫</p> <p>{% for item in result %}{{ item['id'] }} {{ item['name'] }} {{ item['password'] }}{% endfor %} </p> {% endblock %}application.py
from flask import Flask from flask_script import Manager from flask_sqlalchemy import SQLAlchemy import osapp = Flask(__name__) manager = Manager(app)app.config.from_pyfile("config/base_setting.py") #ops_config=local|production #linux export ops_config=local|production #windows set ops_config=local|productionif "ops_config" in os.environ:app.config.from_pyfile("config/%s_setting.py" % (os.environ['ops_config']))db = SQLAlchemy(app)manager.py
from application import app,manager from flask_script import Server,Command from www import *#web server manager.add_command("runserver", Server(host = "0.0.0.0", use_debugger = True, use_reloader = True ))#create_table @Command def create_all():from application import dbfrom common.models.user import Userdb.create_all()manager.add_command( "create_all",create_all )def main():manager.run()if __name__ == "__main__":try:import syssys.exit(main())except Exception as e:import tracebacktraceback.print_exc()requirement.txt
flask flask-sqlalchemy mysqlclient flask-script flask_debugtoolbarwww.py
from application import app from controllers.index import index_page from flask_debugtoolbar import DebugToolbarExtensiontoolbar = DebugToolbarExtension(app)#攔截器和錯誤處理 from interceptors.Auth import * from interceptors.errorHandler import *app.register_blueprint(index_page, url_prefix = "/")這樣的話就不可以用python manager.py來跑了。
從中可以看到。
create_all,就可以創建表了!
runserver是可以跑起來的,所以要這么跑
python manager.py runserver?
總結
以上是生活随笔為你收集整理的Flask笔记-构建mvc分层结构及优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Spring Boot搭建Hello
- 下一篇: C++设计模式-装饰模式