2017-09-15 73 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