Python Flask:render_template - 'dict'对象不可调用

时间:2017-05-19 08:04:37

标签: python flask

我正在尝试使用Flask Blueprint从其他文件制作路线。这是我的“catalog.py文件:

from flask import Blueprint, make_response, render_template
from models.catalog import Catalog

catalog_url = Blueprint('catalog_url', __name__)

@catalog_url.route("/")
@catalog_url.route("/catalog")
def show_all_catalogs():
    try:
        catalogs = Catalog.find_all_catalogs()
        return render_template('publiccatalogs.html', catalogs=catalogs)
    except:
        return {'message': 'Internal Server Error'}, 500

这是我的“app.py”文件:

from catalog import catalog_url
app = Flask(__name__)
app.register_blueprint(catalog_url)

但是当我输入“localhost:5000 / catalog”时,它会返回以下错误:

TypeError: 'dict' object is not callable

我尝试返回纯文本甚至JSON,他们工作得很好。但是当我尝试使用“render_template”时,我不断得到同样的错误。

1 个答案:

答案 0 :(得分:0)

try except,您的代码return render_template('publiccatalogs.html', catalogs=catalogs)是正确的。但是,我怀疑无法找到html模板,然后发生此异常,除了return {'message': 'Internal Server Error'}, 500此部分格式不正确之外。

在Flask中,视图必须返回以下内容之一:

  • 一个字符串
  • 响应对象(或子类)
  • 元组(字符串,状态,标题)或(字符串,状态)
  • 有效的WSGI应用程序