2017-09-15 1 views
-1

Voici mon code écrit en Python:rendu modèle dans Flask renvoie le code HTML dans le navigateur

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') 

Voici mon code 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> 

Le problème est que lorsque je lance le serveur et accéder à la page d'URL appropriée, je reçois le code HTML dans le navigateur. Cela ressemble à ceci: enter image description here

Je voudrais qu'il affiche le dictionnaire que je passe. Comment puis-je le résoudre?

Cette question a été marquée comme doublée, mais les réponses du lien donné n'étaient pas utiles pour mon problème. Je devais créer une nouvelle question et voici une solution: RESTful API - display returned json in html table

+0

d'où vous importez Flask et Api? – bhansa

+1

Eh bien, vous utilisez un objet 'Api', qui est destiné à être utilisé pour créer une API (Application Programming Interface), d'où le nom. L'API est une interface destinée à être utilisée par d'autres programmes, il n'y a donc aucune surprise à ce que le résultat obtenu ne soit pas lisible par l'homme. Pourquoi ne pas utiliser l'objet d'application 'Flask' ​​pour une sortie lisible par un humain? –

+0

Voici mes importations: 'de flacon importer Flask, jsonify, request, render_template de flask_restful importer Api, ressource de sqlalchemy importation create_engine' – pingwin850

Répondre

0

L'API est pour, bien, l'écriture d'une API. Vous n'en avez pas besoin si vous écrivez un site Web normal. Vous devez supprimer le wrapper Api, l'héritage de la ressource et l'appel à add_resoutce.

+0

Quand je fais comme vous l'avez dit alors je ne peux pas accéder à ma page comme ceci: 'http: // localhost: 5002/tracks' – pingwin850

+0

J'essaie de faire une API de repos .. par exemple Je veux accéder à une page d'URL appropriée et afficher dans une table les données de la base de données. – pingwin850

+0

Alors, pourquoi faites-vous un modèle? –

0

se débarrasser de l'API. utiliser la fonction de l'application uniquement. votre flacon d'utilisation n'est pas une api reposante. Voici un exemple du docs

+0

En fait, je dois être un api de repos .. probablement le modèle de rendu devrait être remplacé par quelque chose de différent .. flacon et ne connais pas d'autre solution .. comme je l'ai dit ci-dessus je veux accéder à une page d'URL appropriée et afficher dans une table les données de la base de données .. – pingwin850

+0

Vous devez spécifier quel type de données est votre api retournant? est-ce JSON ou quoi? – Jay

+0

Mon api revient JSON – pingwin850