1项目搭建

一,结构

首先看目录结构:

总体结构:

1,首先新建flask项目

2,在项目一级目录中新建“apps”包,注意是包。新建他是为了简历蓝图。

3,apps下分为cms后台管理,front前台页面以及common公共页面。

4,config是设置文件

5,exts避免双向引用简历的中间件,可参加我之前的博客。

 蓝图结构,以cms为例:

每个蓝图中将表单、数据模型、视图分开来(即:forms,models,views),在views中新建蓝图:

1 from flask import Blueprint
2 
3 # 在‘bp = Blueprint('cms',__name__,url_prefix='cms')’中出错了,原因在于前缀没加‘/4 bp = Blueprint('cms',__name__,url_prefix='/cms')
5 
6 @bp.route('/')
7 def index():
8     return 'cms index'

Note:第4行要加上“/”。为啥后面不加呢?因为后面要是加的话就会形成:“http://127.0.0.1:5000/cms//index”,当然我这里没写index,但是后面加了会使得URL中也毕业加两条//才能访问,不加是为了防止重复。

在cms下的init文件中有:

from .views import bp

这句话实际上是把同级文件views中的bp提到cms这一级别,方便其他文件对他import。

比如主文件puppetbbs中本来应该是“from apps.cms.views import bp as cms_bp”,但是我们在cms/front/common中init中加入了“from .views import bp”,使得从“apps.cms”就能导入bp。且我们用as给他取个别名。才有下面这种简单的调用:

from apps.cms import bp as cms_bp

最后,在主文件中记得注册蓝图。这里有一点需要注意:

先看源码,blueprint这里没说接受字符串,因此不要用把cms_bp打引号,应该为下面代码:

app.register_blueprint(cms_bp)  #Note:cms_bp不需要打引号

原文地址:https://www.cnblogs.com/two-peanuts/p/11346613.html