使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用

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

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能

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

一、创建蓝图

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')

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

2.同一个目录里,可以注册多个“url_prefix”的值相同的蓝图。但是,在不同的目录里,则不可以进行此操作。

二、注册蓝图

注意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 查找,都不找着则报错。

3.Flask 并不会只搜索当前 views.py 文件所在的目录下的 templates 目录,而是搜索所有的 templates 目录。

也就是说:

/demo/templates

/demo/modules/home/templates/index.html

/demo/modules/user/templates/index.html

如果在 home 目录下搜索到 index.html 文件,则不会继续搜索 user 目录。

所以,当需要使用一个页面做为公共页面的时候(类似 ASP.NET MVC 中的_Lyout.cshtml),可以这样:

base.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>base</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>

/home/templates/index.html:

{% extends "base.html" %}
{% block content %}
index.html
{% endblock %}

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

  1. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能

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

  2. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整

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

  3. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用

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

  4. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能

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

  5. Flask框架获取用户IP地址的方法

    本文实例讲述了python使用Flask框架获取用户IP地址的方法.分享给大家供大家参考.具体如下: 下面的代码包含了html页面和python代码,非常详细,如果你正使用Flask,也可以学习一下最 ...

  6. vue新手入门之使用vue框架搭建用户登录注册案例,手动搭建webpack+Vue项目(附源码,图文详解,亲测有效)

    前言 本篇随笔主要写了手动搭建一个webpack+Vue项目,掌握相关loader的安装与使用,包括css-loader.style-loader.vue-loader.url-loader.sass ...

  7. Flask学习之五 用户登录

    英文博客地址:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins 中文翻译地址:http:// ...

  8. Django框架(十八)—— auth框架:用户登录、注册、认证

    目录 auth模块 一.什么是author模块 二.auth模块的使用 1.创建超级用户(create_superuser()) 2.验证用户(authenticate()) 3.登录用户(login ...

  9. 用flask实现一个用户登录的功能

    #!/usr/bin/python #coding=utf-8 from flask import Flask,session,redirect,url_for,request app=Flask(_ ...

随机推荐

  1. 【QT】二进制读取图像文件并显示

    打开对话框选择文件 二进制方式读取文件 转换成图像显示 void MainWindow::showImage() { //打开文件对话框 QString lastPath="D:/Engli ...

  2. python--类的约束,异常处理,MD5加密,日志处理logging模块

    1.类的约束 在开发中,如果项目经理需要对类进行约束,可以有两种方式 1. 对子类进行约束 Base: #对子类进行约束,必须重写这个方法 # 在工作中发现了NotImplementedError之后 ...

  3. CASE语句用法学习

    A. 使用带有 CASE 简单表达式的 SELECT 语句 SELECT ProductNumber, Category = CASE ProductLine WHEN 'R' THEN 'Road' ...

  4. C++中重载、覆盖和隐藏

    一,多态性 1,(1)声明了基类的指针,该指针指向基类,该指针永远调用自己的成员函数,不管函数是否为虚函数. (2)声明了派生类的指针,该指针指向该派生类,该指针永远调用自己的成员函数,不管函数是否为 ...

  5. Maven的Mirror和Repository 的详细讲解

    1 Repository(仓库) 1.1 Maven仓库主要有2种: remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问 local repository ...

  6. Microsoft Visual C++ 14.0 is required

    building 'twisted.test.raiser' extensionerror: Microsoft Visual C++ 14.0 is required. Get it with &q ...

  7. [redis]复制机制,调优,故障排查

    在redis的安装目录下首先启动一个redis服务,使用默认的配置文件,作为主服务 ubuntu@slave1:~/redis2$ ./redis-server ./redis.conf & ...

  8. 初学Oracle

    初学Oracle,遇到了很多的问题,下载的是Oracle11g,没有找到合适的管理工具,所以用sql plus 创建表,以下是本人总结的一些sql plus的命令行的命令,希望对大家有用 与sql p ...

  9. Mysql 四种事务隔离介绍以及锁机制

    还有很多不太懂,这里收集几份大佬文章“飞机票”,待我整理好了,再好好写一篇文章吧. MySQL的四种事务隔离级别 https://www.cnblogs.com/huanongying/p/70215 ...

  10. StarUML使用简明教程

    最近了解到StarUML比较多,所以写一篇教程供大家参考,不足支持,请见谅. StarUML(简称SU),是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图表的工具.StarUML是一 ...