Пытаюсь внедрить шаблон HTML в первый проект Django. Фильмы не показываются - PullRequest
0 голосов
/ 26 мая 2020

Я следую онлайн-руководству Python, и мне нужно создать шаблон HTML, в котором создается таблица для конечного пользователя, чтобы увидеть фильмы в инвентаре. Я шаг за шагом следовал инструкциям учителей, но когда я обновляю sh страницу браузера, она показывает только те атрибуты класса, которые я перечислил в HTML. Код, который я написал, приведен ниже:

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>

и Файл views.py:

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

Вот какие результаты в моем веб-браузере:

введите описание изображения здесь

Если кто-то знает, почему это не работает, любая помощь будет потрясающей!

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Как упомянул другой пользователь @ le.chris, у вас, кажется, есть пространство, в котором вы передаете контекст. Это был бы правильный контекст: return render(request, 'index.html', {' movies': movies}). Однако в вашем файле представлений я настоятельно рекомендую иметь представления на основе классов, начните с импорта ListView в этом случае и создайте post_list. html или укажите имя_шаблона, а поскольку вы используете movies в качестве объекта контекста , вам также необходимо указать это в атрибуте context_object_name. Может быть так:

class MovieListView(ListView):
    model = Movie
    template_name = 'appname/index.html' #appname is the name of your app 
    context_object_name = 'movies'
    ordering = # optional 
    paginate_by = 3

в вашем файле urls.py приложения:

path('', MovieListView.as_view(), name='movie-index') #adjust the name as you please

0 голосов
/ 26 мая 2020

Кажется, у вас есть пространство, в котором вы передаете контекст:

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

Вам нужно заменить ' movies' на 'movies', иначе переменная не будет доступна с правильным именем во время рендеринга шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...