问题说明
尝试启动Flask时收到错误消息。
Traceback (most recent call last):
File "./run.py", line 3, in <module>
from app import app
File "/home/xxxxxx/xxxx.xxxxxxx.com/ClientTracker/app/__init__.py", line 13, in <module>
app.register_blueprint(admin)
File "/home/xxxxx/xxxxx.xxxxxxx.com/ClientTracker/env/local/lib/python2.7/site-packages/flask/app.py", line 65, in wrapper_func
return f(self, *args, **kwargs)
File "/home/xxxxx/xxxxx.xxxxxxx.com/ClientTracker/env/local/lib/python2.7/site-packages/flask/app.py", line 958, in register_blueprint
if blueprint.name in self.blueprints:
AttributeError: 'function' object has no attribute 'name'
这是从实现蓝图的更简单的层次结构迁移。我正在拆分前端和管理面板的功能。
我逐步建立了这个,并且让双方都正常工作。 开始迁移(功能和路线)。移动一些代码后,我开始收到一条错误消息(基本上与上面相同,但不同的行)。
疑难解答
代码
#ClientTracker/run.py
#!env/bin/python
from app import app
app.run(host='0.0.0.0', port=8080, debug=False)
#ClientTracker/app/__init__.py
# Import flask and template operators
from flask import Flask, render_template
# Define the WSGI application object
app = Flask(__name__)
# Import a module / component using its blueprint handler variable (mod_auth)
#from app.mod_auth.controllers import mod_auth as auth_module
from app.admin.views import admin
from app.client.views import client
# Register blueprint(s)
app.register_blueprint(admin)
app.register_blueprint(client)
#ClientTracker/app/admin/views.py
from flask import render_template, request, Blueprint
from app import app
import MySQLdb
import datetime
admin = Blueprint(
'admin',
__name__,
url_prefix='/admin',
template_folder='templates',
static_folder='static'
)
@admin.route('/')
def admin():
return "ok"
我没有想法。
答案 0 :(得分:9)
好吧,好像似乎发生了,我花了一个小时看,另外15分钟写了一个问题,然后在我发帖后,我找到了答案。
我找到了一个有答案的帖子(https://github.com/pallets/flask/issues/1327)。
基本上,您不能拥有与蓝图名称同名的功能名称。现在似乎显而易见,但肯定让我感到困惑了一段时间。
在考虑它时,我原来的“工作”状态有一个虚函数名称,用于'/'。当我回滚时,我没有回滚得足够远。
替换def admin():使用def admin1():(将在prod中更好地解决这个问题)并且一切正常。
我希望这篇文章可以帮助别人。请随时发表评论。与往常一样,该团队总是比个人更聪明。最后,感谢您阅读这篇文章。 : - )