码迷,mamicode.com
首页 > 其他好文 > 详细

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化

时间:2016-02-23 11:04:08      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

关于蓝图的使用,可以查看文档:点击进入

 

一、创建蓝图

1.在 demo 目录下创建一个 modules 目录,做为模块的目录。

2.在 modules 目录下,创建一个 home 目录,做为主页模块。

3.在 home 目录下创建一个 views.py 文件,用来编写路由与请求处理。(相当于 ASP.NET MVC 里的 Routes 和 Controllers)

4.在 home 目录下创建一个 templates 目录,做为 home 模块的模板存放目录,并在这下面创建一个空的 index.html 页面。

views.py

homeRoute = Blueprint(home, __name__, url_prefix=/, template_folder=templates)


@homeRoute.route(/)
def index():
    return render_template(index.html)

技术分享

注意1:

homeRoute = Blueprint(home, __name__, url_prefix=/, template_folder=templates)

这行代码,由 Blueprint 创建的对象,只能在同一个 views.py 中使用一次。也就是说,不可以将该对象做为公共的路由对象来给多个 .py 文件引用使用。

二、注册蓝图

注意2:蓝图只能在 run.py 文件里进行注册,如果在 create_app() 函数或该函数所在的文件进行注册将出现循环引用的异常。

修改后的完整 run.py:

# config=utf-8
from demo import create_app
from demo.modules.home.views import homeRoute

DEFAULT_MODULES = [homeRoute]

app = create_app(config.py)

for module in DEFAULT_MODULES:
    app.register_blueprint(module)


@app.before_request
def before_request():
    """
    这里是全局的方法,在请求开始之前调用。
    其中 flask 有个全局的变量 g,它是和 session 一样的用途,可以使用它来保存当前用户的数据
    Returns:

    """
    pass


if __name__ == __main__:
    app.run()

 三、关于模板的搜索规则

1.Flask 会优先搜索应用根目录下的 templates 目录。

2.Flask 接着会搜索 views.py 文件所在的目录下的 templates 目录。

Flask 在 1 处找到了页面时,则不会进入 2,在 1 处找不到页面时,则会进入 2 查找,都不找着则报错。

 

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化

标签:

原文地址:http://www.cnblogs.com/cjnmy36723/p/5209027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!