0
我试图将一个小应用程序分解为单元并在烧瓶中使用Blueprint模式。不过,我似乎无法让应用程序运行。使用蓝图构造烧瓶错误
这里是我的结构:
\myapp
login.py
\upload
__init__.py
views.py
这里是login.py:
import sys, os
from flask import Flask, Blueprint, request
from flask import render_template, session
from .upload import views
app = Flask(__name__)
app.register_blueprint(views)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
print app.url_map
print app.blueprints
app.run(debug = True)
为__init__.py
from flask import Flask
app.register_blueprint('upload', __name__)
和views.py
from flask import Flask, Blueprint, request, redirect, url_for, render_template
import views
upload = Blueprint('upload', __name__)
@upload.route('/uploaded', methods=['GET', 'POST'])
def upload_file():
...
在在Heroku上的日志
来看,这里是错误:
from .upload import views
2015-09-05T10:59:00.506513+00:00 app[web.1]: ValueError: Attempted relative import in non-package
有一个结构化的我的包和蓝图是否正确?我使用了文档,但我想我在这里错过了一些东西。
我做了这些变化,但现在我得到的问题:如果blueprint.name在self.blueprints: AttributeError的:“功能”对象有没有属性“名” – disruptive
看来蓝图不能相同的名称作为模块? – disruptive
嗯,疯狂猜测:你没有在'views.py'文件(在你的问题中复制的部分下面)有一个名为'upload'的函数,它会覆盖文件开始处定义的'upload'蓝图? – Nicolas