本文共 1271 字,大约阅读时间需要 4 分钟。
——————————————————————前言————————————————————————————
之前我们讲过使用包和模块组织我们的web程序:
|-flasky
|-app/ #web程序相关的内容在app包里,包括以下内容:
|-templates/ #响应返回的模板
|-static/ #响应返回的静态文件
|-main/ #蓝本
|-__init__.py
|-errors.py
|-forms.py
|-views.py
|-__init__.py
|-email.py #发送邮件的函数:发送邮件也是web程序的一个功能
|-models.py #数据库中的表, 也是web程序的一部分
与web程序相关的内容都在app包里, 包括main蓝本, 与它相关联的路由作用是返回程序主页, 如今我们要添加具有认证功能的新蓝本:
|-app/
|-auth/ #蓝本
__init__.py #创建auth蓝本
views.py #与认证相关的路由
from flask import Blueprintauth = Blueprint('auth', __name__) #创建蓝本, 第一个参数是蓝本名, 第二个参数是蓝本所在的包或模块from . import views #把蓝本与路由关联起来
from flask import render_templatefrom . import auth@auth.route('/login')def login(): return render_template('auth/login.html')
注意render_template的参数'auth/login.html', 之前我们说过, 程序默认在app = Flask(__name__)中的__name__变量指示的包/或模块所在的文件夹中/的templates文件夹中寻找模板, 之前我们的模板直接存在templates文件夹中, 所以render_templates的参数都是文件名.html, 为了避免命名冲突, 我们为auth蓝本返回的模板单独创建一文件夹auth, 并把模板存在auth文件夹中, render_templates的参数就是auth/文件名.html。
|-app/__init__.py
def create_app(config_name): #... from .auth import auth as auth_blueprint app.register_blueprint(auth_blueprint, prefix='/auth')#注意register_blueprint的第二个参数prefix, 只要是auth蓝本对应的路由, 它的url都会加上/auth这个前缀。
转载地址:http://rqaii.baihongyu.com/