Flask-REST-分离博客:整体目录结构篇


最近新搞了个blog 很简单,docker安装。需要的话留言 我告诉你怎么安装

如果让我在Django和Flask中选框架,我会选用Flask

框架我喜欢用Flask的原因很简单,就是我可以自由发挥。我可以控制。就是这么简单,可能我对Django理解的不好,不过在实际开发上,还是Flask对我帮助很大,让我对Python理解的更多点,下面我分享一个很简单的,也是我现在用的项目结构

一个好用的Flask项目结构,我会把所用的方法组建出来

我来简要说下我想组织的结构样子吧:docker + 蓝图 + rest

为什么要用docker?因为目前在学习这个,而且发现这个节约部署成本,很好用!!。当然我主要还是为了学习加深理解,至于蓝图和rest就不介绍了,

好了废话不多说我直接上目录样式给大家看下是什么样的。

整体结构图图

apps是我用来做版本控制的

apps版本控制

图片上common/flask_app/script这三个文件夹是用来封装一些好用的方法,后期我会慢慢添加进去,我会以另一种方式,为大家展示出来。在写文章的时候也是进步,你学会了并不一定能写出来,写出来了才是自己的学到的。我很喜欢这样的话。

app.py

建立一个空白文件夹(我这里是Flask-Api)和一个app,对的就是这么简单粗暴!!这也是我喜欢用的原因。

from flask import Flask
flask_app = Flask(__name__)

@flask_app .route('/hello')
def hello():
   #万能的hello world
    return 'hello world!'

if __name__ == '__main__':
    flask_app.run()
  • 一个简单的app就定义好了,这个只是初始状态后面我会增加别的内容,例如加上gevent。
  • 好吧现在我们可以尝试python app.py看看运行效果。这里我就不打开了。没多大意思。
  • 下一步我我将开始把flask-restful 加入上去
from flask import Flask
from flask_restful import Api, Resource


flask_app = Flask(__name__)

app = Api(flask_app)


class Hello(Resource):
    def get(self):
        return 'hello world!'


app.add_resource(Hello, '/hello')

if __name__ == '__main__':
    flask_app.run()
  • 第一步算是搭建完成了,这里使用了即插式视图管理,以前我喜欢用flask推荐的route,但是现在发现没有这个好用好管理。这个也是我喜欢flask之一,当然每个人都有没个人书写的方式

拆分代码

这一部分我将把代码分开,毕竟app.py只是一个启动文件,不能把代码写在一个文件

  • 在apps中新建v1
  • 在v1中创建py文件
  • 在v1中的init写入路由
  • 在apps中init写入注册蓝图(其实完全可以把init看做是一个管理中心)


    v1文件
  • flask_restful 注册需要app在官方案例中是要才可以注册的,那么现在不开文件了。也是同样的,我们可以写一个方法作为传递(蓝图也是这么实现的,其实只要想明白他们是怎么运行的,你就可以随意拆解)
#在v1中创建test
from flask_restful import Resource

class Hello(Resource):
   def get(self):
        return 'hello world!'
#在v1中init
from flask_restful import Api
from apps.v1.test import HelloWorld

def register_views(app):
    api = Api(app)
    api.add_resource(HelloWorld, '/hello', endpoint="hello")
# 现在的app.py是这样的
from flask import Flask
from apps.v1 import register_views

flask_app = Flask(__name__)

def init_app(app):
    register_views(app)

init_app(flask_app)

if __name__ == '__main__':
    flask_app.run()

好了,到现在这一步仅官方rest就写完了,其实之前我就用这个,但是总是感觉少了点什么.
蓝图,相信用过的人都喜欢用,下面代码我就把蓝图加上,

#在v1中init
from flask import Blueprint
from flask_restful import Api
from apps.v1.test import HelloWorld

def register_views(app):
    api = Api(app)
    api.add_resource(HelloWorld, '/hello', endpoint="hello")

def create_blueprint_v1():
    """
    注册蓝图->v1版本
    """
    bp_v1 = Blueprint('v1', __name__)
    register_views(bp_v1)
    return bp_v1
#在apps中init
from apps.v1 import create_blueprint_v1

def register_blueprints(app):
    # 注册版本
    app.register_blueprint(create_blueprint_v1(), url_prefix='/v1')
# 现在的app.py是这样的
from flask import Flask
from apps import register_blueprints

flask_app = Flask(__name__)

def init_app(app):
    register_blueprints(app)

init_app(flask_app)

if __name__ == '__main__':
    flask_app.run()

好了,至此我想写的东西基础已经写完了,是不是感觉就是在init中写方法,我自己就是把他们认为管子,在init中传递app,到最后只要汇总就可以正常运行了。

后面,我会把数据库加入(这些我都理解成包,需要什么功能,就加),但是目前不会加入,所用的场景现在还没涉及到数据库,就没必要填加一些没有的东西,这篇文章就是为了把这个基础结构给搭建好,现在搭建好了,就准备下一篇文章了,Docker构建镜像,上传到服务器

其实我喜欢这种堆积木的感觉,只要找到相应的方法什么,没有什么是做不了的


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容