2017-09-15 57 views
-1

这里的用Python写的我的代码:渲染模板在瓶返回浏览器的HTML代码

from flask import Flask, jsonify, request, render_template 
from flask_restful import Api, Resource 

app = Flask(__name__) 
api = Api(app) 

class Tracks(Resource): 
    @app.route('/') 
    def get(self): 
     test = { 
      "name": "json2html", 
      "description": "Converts JSON to HTML tabular representation" 
     } 
     return render_template('index.html', value=test) 

api.add_resource(Tracks, '/tracks') 

if __name__ == '__main__': 
    app.run(port='5002') 

这里是我的index.html代码:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> 
    <title>Hello World!</title> 
</head> 
<body> 
    <div> 
     <p> 
      Hello {{value|safe}} 
     </p> 
    </div> 
</body> 
</html> 

的问题是,当我运行服务器和访问相应的url页面我在浏览器中获取html代码。它看起来像这样:enter image description here

我希望它显示我通过的字典。我该如何解决它?

这个问题已被标记为重复的,但给定链接的答案对我的问题没有用处。我不得不创建一个新的问题,这里有一个解决方案:RESTful API - display returned json in html table

+0

你从哪里导入Flask和Api? – bhansa

+1

那么,你正在使用'Api'对象,它旨在用于创建一个API(应用程序编程接口),因此名称。 API是一个旨在被其他程序使用的接口,所以没有什么惊人的结果,你从它得到的不完全是人类可读的。为什么不使用'Flask'应用程序对象进行人类可读的输出? –

+0

这里是我的进口:'从烧瓶进口烧瓶,jsonify,请求,render_template from flask_restful import Api,资源 from sqlalchemy import create_engine' – pingwin850

回答

0

API的东西是写好API的。如果你正在写一个普通的网站,你不需要它。

您应该删除Api包装器,资源继承和add_resoutce的调用。

+0

当我如你所说,然后我不能访问我的网页是这样的:'http:// localhost:5002/tracks' – pingwin850

+0

我想做一个休息API ..例如我想访问一个合适的URL页面并在数据库中显示表格数据。 – pingwin850

+0

那你为什么要渲染一个模板? –

0

摆脱api。仅使用应用程序功能。你使用的烧瓶不是一个安静的API。下面的例子来自docs

+0

其实,我必须是一个休息api ..可能应该用不同的东西来代替渲染模板..但我是新的到瓶和不知道任何其他的解决方案..正如我上面说的,我想访问一个适当的网页,并在数据库中显示的数据表.. – pingwin850

+0

你应该指定你的api返回什么样的数据?它是json还是什么? – Jay

+0

我的API将返回JSON – pingwin850