开始一个Flask项目(项目布局和蓝图)

该博客介绍了如何开始一个Flask项目,包括配置config文件、项目初始化、管理文件的设置以及如何使用蓝图进行模块化开发。在config中定义了不同环境的配置,__init__.py文件用于初始化Redis、CSRF保护和日志功能,manage文件则用于数据库迁移和服务器管理。蓝图的使用包括在api_0_1文件夹创建蓝图,注册到app,并在视图文件中应用蓝图,启动服务器时需加上蓝图前缀。
摘要由CSDN通过智能技术生成


前文:官方文档也有项目布局相关内容: https://dormousehole.readthedocs.io/en/latest/tutorial/layout.html
下面是在使用中的项目布局,可能有点不完整需要补齐
在这里插入图片描述

先配置config配置文件开始

配置项目需要的内容即可

import os
import redis

# 配置文件
class Config(object):
    # 关系型数据库的配置
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/guazi'
    SECRET_KEY = os.urandom(24)
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    # 非关系型数据库的配置
    REDIS_HOST = '127.0.0.1'
    REDIS_PORT = 6379
    # 配置session的扩展,session类型
    SESSION_TYPE = 'redis'
    # 创建redis链接,有密码设置密码
    SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
    # 是否对发送到浏览器上session的cookie值进行加密
    SESSION_USE_SIGNER = True
    PERMANENT_SESSION_LIFETIME = 60*60*24*2  # 生命周期
    SESSION_PERMANENT = False  # 如果设置为True,则关闭浏览器session就失效
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask 中使用工厂模式可以让应用更加灵活、可扩展性更高,以下是一个最佳的 Flask 项目布局: ``` project/ app/ __init__.py models.py views/ __init__.py auth.py main.py templates/ base.html index.html auth/ login.html register.html static/ css/ js/ img/ config.py tests/ __init__.py test_views.py run.py requirements.txt ``` 其中,`app` 目录下存放应用的代码,`tests` 目录下存放测试用例,`run.py` 是应用的入口文件,`requirements.txt` 存放应用的依赖包。 `app/__init__.py` 文件中创建 Flask 应用,初始化数据库、登录管理等扩展,注册蓝图等: ``` from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager db = SQLAlchemy() login_manager = LoginManager() def create_app(): app = Flask(__name__) app.config.from_object('config') db.init_app(app) login_manager.init_app(app) from .views.auth import auth_bp from .views.main import main_bp app.register_blueprint(auth_bp) app.register_blueprint(main_bp) return app ``` `app/models.py` 文件中定义数据库模型: ``` from . import db class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True) password_hash = db.Column(db.String(128)) def __repr__(self): return '<User %r>' % self.username ``` `app/views/` 目录下存放视图函数,使用蓝图将不同功能的视图函数划分到不同的模块中: ``` from flask import Blueprint, render_template main_bp = Blueprint('main', __name__) @main_bp.route('/') def index(): return render_template('index.html') @main_bp.route('/about') def about(): return render_template('about.html') ``` `app/config.py` 文件中存放项目的配置信息: ``` import os basedir = os.path.abspath(os.path.dirname(__file__)) class Config: SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string' SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data.sqlite') SQLALCHEMY_TRACK_MODIFICATIONS = False ``` `tests/test_views.py` 文件中存放测试用例: ``` from flask import url_for def test_index(client): response = client.get(url_for('main.index')) assert response.status_code == 200 assert b'Hello, World!' in response.data ``` `run.py` 文件中启动应用: ``` from app import create_app, db from app.models import User app = create_app() @app.shell_context_processor def make_shell_context(): return {'db': db, 'User': User} ``` 以上是一个最佳的 Flask 项目布局,可以根据实际需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值