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