2012-10-22 60 views
2

我對Flask比較新,但我已經發現需要使用藍圖。但是,在我的藍圖中,我試圖渲染模板,但出現錯誤。Flask渲染模板上下文在Blueprint中是無的

當迷上了作爲一個WSGI應用(Dreamhost上),該render_template函數返回此錯誤:

File ".../app/ui/__init__.py", line 95, in index 
response = make_response(render_template('index.html', **data)) 

File ".../flask/templating.py", line 123, in render_template 
ctx.app.update_template_context(context) 

AttributeError: 'NoneType' object has no attribute 'app' 

然而,當我在調試模式下直接調用app.py它完美! (下同)

python app/app.py 

在app.py:

if __name__ == '__main__': 
    app.run(debug=True, host='0.0.0.0') 

編輯:渲染模板:

@ui_blueprint.route('/', methods=['GET']) 
@ui_blueprint.route('/home', methods=['GET']) 
def index(): 
    data = { 
     'title': 'Index' 
    } 
    response = make_response(render_template('index.html', **data)) 
    return response 

編輯2:ctx是:

  • None在WSGI應用情況
  • 在直接調用情況

任何想法如何我可能會解決這個錯誤<RequestContext 'http://aaa.bbb.com:5000/' [GET] of __init__>?謝謝!

+2

檢查你的代碼中的'ctx'對象,它有什麼,也顯示你創建這個對象的代碼部分。 – avasal

+0

你需要在這裏使用請求上下文。請閱讀http://flask.pocoo.org/docs/reqcontext/ – codegeek

+0

@codegeek是的,模板應該使用請求上下文。但是,如何確保它在此實例中傳遞給render_template? – arboc7

回答

1

設置Flask時,請確保所有依賴關係都已正確安裝。這是這種情況下的問題。

如果在mod_wsgi上運行,還要確保任何讀或寫都指向正確的位置;否則,應用程序在使用app.run()運行時工作,但在使用Apache時路徑會發生變化。

+0

請問你能詳細解釋一下嗎?我有同樣的問題,但似乎一切安裝正確 – the

1

請確保您導入了所有正確的模塊:

from flask import Flask, render_template, make_response, request, Response

而且你可能要創建視圖的包裝。