pythonhtmldjangomosh

Trying to implement HTML Template into first Django project. Movies not showing


I am following along an online Python tutorial and I am have to create an HTML template in which creates a table for the end user to see the movies in the inventory. I have followed the teachers instructions step-by-by step but when I refresh the browser page, it only shows the class attributes that I listed in the HTML. The code that I wrote is below:

index.html file:

<table class="table">
    <thead>
        <tr>
            <th>Title</th>
            <th>Genre</th>
            <th>Stock</th>
            <th>Daily Rate</th>
        </tr>
    </thead>
    <tbody>
        {% for movie in movies %}
            <tr>
                <td>{{ movie.title }}</td>
                <td>{{ movie.genre }}</td>
                <td>{{ movie.number_in_stock }}</td>
                <td>{{ movie.daily_rate }}</td>
            </tr>
        {% endfor %}
    </tbody>
</table>

and the views.py file:

from django.http import HttpResponse
from django.shortcuts import render
from .models import Movie


def index(request):
    movies = Movie.objects.all()
    return render(request, 'index.html', {' movies': movies})

Here is what results on my web browser:

enter image description here

If someone knows why this is not working, any help would be awesome!


Solution

  • You seem to have a space where you are passing the context:

    return render(request, 'index.html', {' movies': movies})
    

    You need to replace ' movies' with 'movies', otherwise the variable will not be available with the correct name while rendering the template.