2012-04-03 7 views
0

Schrieb eine sehr einfache Funktion zum Ziehen von Daten aus dem ESPN API und Anzeige in Standard/Index. Der Standardwert/index ist jedoch eine leere Seite.Problem mit der Weitergabe von JSON an eine Ansicht in Web2py

An diesem Punkt versuche ich nicht einmal, durch den JSON zu parsen - ich will nur etwas in meinem Browser sehen.

default.py:

import urllib2 
import json 

#espn_uri being pulled from models/db.py 

def index(): 
    r = urllib2.Request(espn_uri) 
    opener = urllib2.build_opener()  
    f = opener.open(r) 
    status = json.load(f) 

    return dict(status) 

default/index.html:

{{status}} 

Thank you!

+0

es Korrigiert: Sehr einfache Fehler meinerseits - verwendet Notation django, Web2py ein '=' in der Ansicht erfordert {{= Status}} – user1311549

Antwort

2

Versuchen: Rückkehr dict (status = Status)

Rückkehr dict (Status) funktioniert, weil Status, den sie selbst ein dict und dict (Status) es nur Kopien. Aber es hat wahrscheinlich keinen Schlüssel namens Status oder zumindest nichts Interessantes.

Und ja, Sie brauchen =.

0

Als JLundell berät, erste Rückgepaarte Daten über das Wörterbuch:

return dict(my_status=status) 

Zweitens, wie Sie aus gearbeitet haben, verwenden Sie die folgende der zurück zugreifen, anstatt den lokalen Variablen in index.html. Stellen Sie sicher, dass Sie das Gleichheits nutzen hier anmelden oder es wird nichts angezeigt

{{=my_status}} 

Wenn es um JSON kommt, können Sie die Daten

mit zurückgeben kann
return my_status.json() 

Mehrere andere Optionen zur Verfügung stehen Daten als Liste zurückzukehren, oder um HTML zurückzugeben.

Zum Schluss empfehle ich, dass Sie jQuery und AJAX ($ .ajax) verwenden, damit der AJAX-Rückgabewert einfach einem JS-Objekt zugewiesen werden kann. Dies ermöglicht Ihnen auch, Erfolg oder Fehler in Form von JS-Funktionen zu behandeln.