Flask 六把刀个人博客 项目实战-大型项目结构

六把刀

下一篇 Pyenv + Pipenv + Nginx + Gunicorn + Supervisor 部署 Flask 程序

准备静态文件后台管理的模板,我用的是Material Pro Admin Template 点击这里下载。这里我放出基础模板 material/pages-blank.html

这个就是基础模板,大家可以试着上面的下载来整理下。我这里不说整理流程,你们可以对比我的个人博客项目里面的static与app/templates下面的模板文件做下对比就知道了。

大家看我的教程时,最好先看下官方手册,看个几遍,有一定基础知识先。链接地址:教程

/app/config.py 配置设置 这里对应参照官方 配置设置

import os

basedir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))


class Config(object):
    FLASK_WEB_NAME = '后台管理'
    SECRET_KEY = os.environ.get('SECRET_KEY') or '!@#$%^&*12345678'

class DevelopmentConfig(Config):
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL')


class ProductionConfig(Config):
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL')


config = {
    'development': DevelopmentConfig,
    'production': ProductionConfig,
}

配置的方法多种多样,由你定度。以下是一些好的建议:

定义一个对象,两个状态,一个是development 开发的配置,一个是production 线上环境,这里有一些实际场景就是开发与部署会不同的配置,比如数据库。

/app/__init__.py 应用设置 这里参照官方的 应用设置

from flask import Flask
from app.config import config
from app.admin import site
import os


def create_app(config_class=None):
    if config_class is None:
        config_class = os.getenv('FLASK_CONFIG', 'development')
    app = Flask(__name__)
    app.config.from_object(config[config_class])

    register_buleprints(app)

    return app

注册蓝本

def register_buleprints(app):
    # frontend
    app.register_blueprint(site.bp)

这里跟官方有点差点,就是把单独注册蓝本这一块,用函数封装了。这些都是为了组织结构,要不然一大堆代码都在create_app里,看着也乱。

/app/admin/site.py 这里参数官方的蓝图和视图

from flask import Blueprint, render_template

bp = Blueprint('site', __name__)


@bp.route('/')
def index():
    return render_template('admin/site/index.html')

/run.py 开发应用入口

from app import create_app

app = create_app()

这是一个开发的入口文件,这里东西尽量越少越好。但也可以放一些很好玩的东西。比如:@app.shell_context_processor 可以查看官方

/wsgi.py 线上应用启动入口 这里传入了参数,线上配置

from app import create_app

app = create_app('production')

/.env 私有环境变量

FLASK_ENV = 'development'

/.flaskenv 公共的环境变量

FLASK_APP=run.py
FLASK_ENV = 'production'

最后运行起来看下

$ pipenv run flask run
Loading .env environment variables…
 * Serving Flask app "run.py" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 195-312-920

打开浏览器:http://127.0.0.1:5000

这样,基础的工厂环境已经可以了。

下一篇 六把刀个人博客Flask项目实战-用户模块

阅读 1.2k
20 声望
1 粉丝
0 条评论
20 声望
1 粉丝
文章目录
宣传栏