2

私はFlaskに比較的慣れていませんが、ブループリントを使用する必要性をすでに感じています。ただし、ブループリントでテンプレートをレンダリングしようとしていますが、エラーが発生します。

(Dreamhost上の)WSGIアプリケーションとして接続すると、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は:

  • NoneWSGIアプリの場合
  • <RequestContext 'http://aaa.bbb.com:5000/' [GET] of __init__>直通電話の場合

このエラーを修正する方法はありますか?ありがとう!

4

2 に答える 2

1

Flaskを設定するときは、すべての依存関係が正しくインストールされていることを確認してください。それがこの場合の問題です。

mod_wsgiで実行している場合は、読み取りまたは書き込みが適切な場所に送信されていることも確認してください。それ以外の場合、アプリはを使用して実行すると機能しますapp.run()が、Apacheを使用するとパスが変更されます。

于 2012-11-07T17:57:57.620 に答える
1

適切なモジュールをすべてインポートしていることを確認してください。

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

また、ビューのラッパーを作成することもできます。

于 2012-10-22T21:28:02.107 に答える