目录

  • 一:项目初始化:
  • 二:配置MYSQL数据库:
  • 三:配置Redis数据库:
  • 四:配置模块化:
  • 五:自定义JSON的返回格式:
  • 六:再次登录断开连接

一:项目初始化:

1:在app/settings/config.py中编写配置信息:

# 配置父类
class BaseConfig(object):SECRET_KEY = "python"# 开发模式配置信息
class DevelopmentConfig(BaseConfig):DEBUG = True# 生产模式配置信息
class ProductionConfig(BaseConfig):DEBUG = False# 测试模式配置信息
class TestingConfig(BaseConfig):TESTING = True# 给别的模块提供调用的接口
config_dict = {"dev", DevelopmentConfig,"pro", ProductionConfig,"test", TestingConfig
}

2:在初始化文件中创建app的工厂方法
app/settings/__init__.py

from flask import Flask
from app.settings.config import config_dict
from common.utils.contants import EXTRA_ENV_CONFIG
import os, sys
"""
项目初始化文件
# 1:定义工厂函数
# 2:将common路径添加到python的搜索路径中。
"""
# 项目的根路径TopNews
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, BASE_PATH + '/common')def _create_flask_app(config_name):"""内部调用创建app对象的工厂方法:param config_name: 配置名:return: app对象"""# 1:创建app对象app = Flask(__name__)# 2:读取配置类中的配置信息config_class = config_dict[config_name]app.config.from_object(config_class)# 3:读取环境变量中的配置信息app.config.from_envvar(EXTRA_ENV_CONFIG, silent=True)return app

3:在common/utils/contants.py中填写全局变量信息:

# 隐私配置的环境变量
EXTRA_ENV_CONFIG = 'ENV_CONFIG'

4:在app/settings/__init__.py文件中创建一个外部可以调用的工厂方法:

# 提供一个给外界调用的创建app的方法
def create_app(config_name):"""外部调用工厂方法创建app对象:param config_name::return:"""# 1:创建app对象app = _create_flask_app(config_name)# 2: TODO: 注册拓展主键# 3:TODO:注册蓝图组件return app

5:在app/main.py中创建app对象和路由:

from app import create_app
from flask import jsonify
# 1: 通过工厂方法创建app
app = create_app('dev')# 2:定义视图函数绑定路由信息
@app.route('/')
def index():rule_dict = {rule.rule: rule.endpoint for rule in app.url_map.iter_rules()}return jsonify(rule_dict)

6:进行测试:

二:配置MYSQL数据库:

1:更新配置类,增加mysql数据库的配置信息:
app/settings/config.py

class BaseConfig(object):# 加密密钥SECRET_KEY = "python"# mysql数据库的配置信息 + 解决内部报错SQLALCHEMY_DATABASE_URI = "root+mysql://python:chuanzhi@192.168.44.128:3306/hm_topnews"# 开启底层输出sql语句SQLALCHEMY_ECHO = True# 关闭数据库修改跟踪SQLALCHEMY_TRACK_MODIFICATIONS = False# redis数据库的配置信息REDIS_HOST = "192.168.44.128"REDIS_PORT = 6381

2:创建数据库对象,并进行延后关联。
app/settings/__init__.py

# 创建数据库对象,定义成全局变量,方便别的模块调用。
db = SQLAlchemy()
# 提供一个给外界调用的创建app的方法
def create_app(config_name):"""外部调用工厂方法创建app对象:param config_name::return:"""# 1:创建app对象app = _create_flask_app(config_name)# 2: TODO: 注册拓展主键# 创建数据库对象register_extendions(app)# 3:TODO:注册蓝图组件return appdef register_extendions(app:Flask):# 1: 数据库对象关联app,延后关联db.init_app(app)

三:配置Redis数据库:

1:增加redis数据库的配置信息:
app/settings/config.py

# 配置父类
class BaseConfig(object):....# redis数据库的配置信息REDIS_HOST = "192.168.44.128"REDIS_PORT = 6379

2:创建redis数据对象,并且工厂方法进行实例化:
app/settings/__init__.py

# 创建redis数据库对象,延后加载。
redis_cli = None # type: StrictRedis
def register_extendions(app:Flask):# 1: 数据库对象关联app,延后关联db.init_app(app)global redis_cli# 2: redis数据库都西昂,延后关联,响应解码redis_cli = StrictRedis(host=app.config['REDIS_HOST'],port=app.config["REDIS_PORT"],decode_responses=True)

四:配置模块化:

1:创建发送验证码的类视图:
app/resources/user/passport

from flask_restful import Resourceclass SMSCodeResource(Resource):"""发送短信验证码的视图"""def get(self, mobile):return "get message"

2:创建用户模块的蓝图:
app/resources/user/__init__

from flask import Blueprint
from flask_restful import Apifrom utils.contants import USER_URL_PREFIX# 1:创建蓝图对象
user_bp = Blueprint("suer", __name__, url_prefix=USER_URL_PREFIX)
# 2:将蓝图对象包装成具备restful风格的组件对象
user_api = Api(user_bp)
# 3:给类视图增加信息
from app.resources.user.passport import SMSCodeResource
user_api.add_resource(SMSCodeResource)

3:在全局环境变量中增加用户模块的路由前缀:
common/utils/constants

# 隐私配置的环境变量
EXTRA_ENV_CONFIG = 'ENV_CONFIG'
# user蓝图的路由前缀
USER_URL_PREFIX = "/app"

4:注册蓝图,生成注册过蓝图的app对象。
app/settings/__init__.py

def register_Blueprint(app:Flask):# 1:注册用户模块的蓝图# 注意避免循环导包from app.resources.user import user_bp# /app/sms/codes/18511112222user_api.add_resource(SMSCodeResource, '/sms/codes/<mobile>')
# 提供一个给外界调用的创建app的方法
def create_app(config_name):...# 3:TODO:注册蓝图组件register_Blueprint(app)return app

5:测试:

五:自定义JSON的返回格式:

1:重写flask_restful自定义的json返回。
common/utils/output_json

from flask import make_response, current_app, request
from flask_restful.utils import PY3
from json import dumpsdef output_json(data, code, headers=None):"""Makes a Flask response with a JSON encoded body"""if str(code) == '400':current_app.logger.warn(request.headers)current_app.logger.warn(request.data)current_app.logger.warn(str(data))if 'message' not in data:data = {'message': 'OK','data': data}settings = current_app.config.get('RESTFUL_JSON', {})# If we're in debug mode, and the indent is not set, we set it to a# reasonable value here.  Note that this won't override any existing value# that was set.  We also set the "sort_keys" value.if current_app.debug:settings.setdefault('indent', 4)settings.setdefault('sort_keys', not PY3)# always end the json dumps with a new line# see https://github.com/mitsuhiko/flask/pull/1262dumped = dumps(data, **settings) + "\n"resp = make_response(dumped, code)resp.headers.extend(headers or {})return resp

2:让output_json主动装饰:
app/resources/user/__init__.py

# 5: 装饰自定义返回json格式的函数output_json
# 通俗来讲,就是将自定义的output_json变成装饰器,能够装饰蓝图对象下的视图
user_api.representation(mediatype="application/json")(output_json())

3:修改视图返回字典:

class SMSCodeResource(Resource):"""发送短信验证码的视图"""def get(self, mobile):return {"get": "foo"}

4:测试:

六:再次登录断开连接


百变星君---项目初始化搭建相关推荐

  1. 【Node.js+koa--后端管理系统】项目初始化搭建

    项目初始化搭建

  2. 百变星君,Python变量两三事

    百变星君,Python变量两三事 什么是变量 变量就是不断变化的量.在Python中假设有一个变量A,它的值是233,我们可以写成 A=233 print(A) 得到结果233. 我们还可以将A赋值成 ...

  3. 百变星君 Array.reduce

    Vue3 商城项目开源地址:https://github.com/newbee-ltd/newbee-mall-vue3-app Vue3 高仿微信记账本项目开源地址:https://github.c ...

  4. 电子积木fx微型计算机,百变星君|你搭建过“电子积木”吗?

    曾否憧憬自己亲手搭建理想的小世界? 长大啦~不##意思玩了? 现在当然要玩点###的~ 能实现的梦想是什么? 曾经你想要用积木搭建属于自己的帝国 现在!童年里你想筑造的世界CE-32系列也能帮你实现 ...

  5. 百变星君---用户模块

    目录 一:获取验证码: 二:注册登录: 三:获取用户信息: 四:Tocken刷新机制: 五:修改用户头像: 5.1: 七牛云头像测试: 5.2:项目中封装七牛云: 5.3:检验图片类型和封装: 5.4 ...

  6. 百变星君---头条模块

    这里写目录标题 一:获取用户频道: 1.1: 数据的准备: 1.2:接口分析: 1.3:接口代码: 1.4:路由信息与测试: 二:获取所有频道: 2.1:文章模块初始化: 2.2:获取所有频道接口: ...

  7. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU外设那些事(2)- 百变星君FlexRAM

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1xxx系列MCU的FlexRAM外设. 本文是外设系列第二篇,上一篇讲的是离内核最近的高速缓存L1 Cache,今 ...

  8. 从编程角度揭示病毒感染原理--之百变星君(病毒易容术)(下)

    作者:冒险王 在上半部分的实验中我们得到了宿主文件的图标所在的位置,大小和数量.并将它们的信息保存起来,有了这些信息,我们就可以任意施展易容术了!要知道在程序中的图标资源只是编译后的一连串的二进制数值 ...

  9. SpringBoot多模块项目初始化搭建

最新文章

  1. 到了管理层我才发现,这些管理知识应该尽早学起来!
  2. Linux redhat 5.4上安装MYDNS
  3. 按阅读习惯来高效排列字符串的脚本
  4. 限制内存用快排原理PHP
  5. 数学建模学习笔记——层次分析法(评价类,专家打分一般不用)
  6. 惊!空 struct 地址竟然不相等
  7. secoclient隧道保活超时或协商超时_绕不开的TCP之超时重传
  8. 解决应用程序无法正常启动0xc0150002问题(转)
  9. 鸿蒙大陆9.1正式版礼包,鸿蒙大陆2.0正式版
  10. 译(自编码器) Hinton2006---Reducing the Dimensionality of Data with Neural Networks
  11. apicloud总结
  12. PMS权限管理和鉴权过程
  13. 记笔记非常好用的一款工具 eDiary
  14. 计算机技术变化太快,这世界变化太快!Ps修图进入“智能时代”!
  15. 域名该怎样选_给项目选择域名时我们常犯的几个错误 我们应该如何正确选择域名...
  16. 浮云绘图2.0 开发手册 支持状态图、拓扑图、电路图等源码开发
  17. Penny Pinching在云中:Azure网站何时有意义?
  18. 图像边缘锯齿及处理方法
  19. ADS1.2软件的详细安装步骤,手把手。
  20. React技巧之设置行内样式

热门文章

  1. 乐府 ——预训练语言模型在诗词对联生成中的应用
  2. 基于总线技术的武器装备测试系统
  3. 全球与中国2,2,2-三氯乙醇市场现状及未来发展趋势
  4. Fast DDS入门一、Fast DDS介绍
  5. Pytorch学习笔记03----反向传播算法
  6. 采用XILINX的CORDIC IP核计算arctan2(Y,X)
  7. HP2700提示需注意解决方法
  8. 社科院与杜兰大学金融管理硕士项目——好的学历赋予我们更多的选择权
  9. 钱塘江上潮信来,今日方知我是我
  10. 手把手教你python自动化办公(三)---PPT批量修改