如何理解flask中的blueprint的参数
文件结构:
|--hello.py
|--admin
|--__init__.py
|--admin.py
hello.py
from flask import Flask
from admin.admin import admin
app = Flask(__name__)
app.register_blueprint(admin, url_prefix='/admin')
admin.py
from flask import Blueprint
admin = Blueprint('666', __name__)
@admin.route('/')
def index():
return '<h1>X</h1>'
__init__.py
空文件
我这里的疑问是admin = Blueprint('666', __name__)中的参数'666'改成什么程序都可以正常运行,那么这个参数究竟指的是什么,在什么位置?
谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我一直以为 Blueprint 中的 name 参数和 url_for 中所用到的 endpoint (端点)有关,下面是我为什么这样理解的。
首先,我们看一下 flask 的源码: https://github.com/pallets/fl...
其中,有下面的代码:
上面的代码可以明显的看到, Blueprint 类继承了 _PackageBoundObject,其中,name 参数,可是该类自己定义的,那么,我们继续在源码中找 name 参数的作用。
在该类中寻找 self.name, 我们可以看到另外 8 处内容, 分别在该类的 before_request、after_request、teardown_request、context_processor、url_value_preprocessor、url_defaults、errorhandler、register_error_handle 这 8 个类函数中,基本上函数中用到的地方都是:
那么,我们再看看这个 record_once 函数的作用,该函数也是在该类中定义的。
通过注释,很明显地看到这个函数的作用是为了将 name 参数作为唯一标识来在程序中区分蓝图所用的。
那么,回到题主的问题。
一、之所以可以随便定义名称,感觉没有什么影响,那是错觉。
二、你可以试试如果不定义 name 参数,程序会报错,因为这个参数是必须的。