2017-04-26 2 views
-1

Ich versuche, Daten von einer Website in HTML anzuzeigen.So geben Sie Daten aus einer Tabelle in einer Django-Vorlage zurück

Ich habe eine Klasse erstellt Video in models.py wie folgt aufgerufen:

class Video(models.Model): 
    filename = models.CharField("File Name", max_length=100) 
    title = models.CharField("Video Title", max_length=250) 

Die Datenbank migriert wird, und ich bin in der Lage Daten einfügen in eine Django-Formular. Ich habe überprüft und es gibt Daten in der Datenbank.

Ich habe den folgenden Code in meiner HTML-Vorlage-Datei, aber die Seite ist leer, wenn es angezeigt wird, und zeigt keine Daten.

{% for video in Video %} 
<div class="row"> 

    <div class="col-md-3"> 

     <a href="{{ video.filename }}">{{ video.title }}</a> 

    </div> 

</div> 
{% endfor %} 

Warum werden auf der gerenderten HTML-Seite keine Daten angezeigt?

Edit:

Dies ist der entsprechende Code aus der Sicht:

def listvideos(request): 
    """Renders the listvideos page.""" 
    assert isinstance(request, HttpRequest) 
    return render(
     request, 
     'app/listvideos.html', 

    ) 
+0

Wir müssen Siehe die Ansicht. Übergeben Sie etwas namens Video an die Vorlage? –

+0

oh danke, ich werde meine Frage aktualisieren, nein, ich bin nicht ... – Gary

Antwort

2

Vorlagen können nur machen, was Sie an sie weitergeben. Sie senden nichts, Video genannt, so dass Sie nicht darüber iterieren können.

return render(
    request, 
    'app/listvideos.html', 
    {'Video': Video.objects.all()} 
) 

Sie sollten sich überlegen, ob Sie wirklich Ihre Parameter Video, obwohl nennen wollen; es sollte wahrscheinlich sowohl hier als auch in der Vorlage videos genannt werden.

(Und bitte diese Behauptung entfernen Für den Anfang, es keinen Platz in der Produktionscode hat;.. Und zum anderen die Anfrage wird immer ein Httprequest sein, dass ein Teil des Vertrages für eine Ansicht ist)

+0

Dank Daniel, dass perfekt funktioniert, sehr geschätzt. Die Assertion wurde von VS2017 automatisch generiert, ich werde sie entfernen. Was war die Behauptung? Ich werde jetzt die Docs überprüfen, aber wenn es eine einfache Erklärung gibt, warum es nicht da sein sollte, wäre es großartig zu hören. – Gary

+0

Haben Sie auch einen aktualisierten Blog? Ich versuche gerade eine Auswahl von Blogs zu sammeln, die du im Moment lesen kannst, aber dein Blog ist etwas veraltet in deiner Bio :) – Gary

+1

Ja, sorry, ich blogge nicht wirklich über Django in diesen Tagen. Ich weiß nicht, warum die Behauptung eingefügt wurde, aber sie hat einfach keinen Platz. –

Verwandte Themen