Я показываю все фильмы в базе данных, в списке и хотел бы иметь соответствующий плакат под каждым mov ie. Я думаю, что допустил ошибку в своем представлении, поскольку я пытаюсь сделать запрос в классе представления. Модель mov ie имеет поле 'tmdb', в котором хранится идентификатор TMDb для каждого фильма.
Было бы замечательно, если бы кто-то мог указать мне правильное направление, поскольку я все еще новичок в Django, и я раньше не пользовался многими API.
Я не могу опубликовать скриншот, но в результате на каждой веб-странице отображается пустой эскиз под каждым перечисленным mov ie.
Заранее спасибо!
views.py
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
import csv, io, requests
from .models import Movie
from django.views.generic import ListView
from . import config
my_api_key = 'my_api_key'
base_url = 'https://api.themoviedb.org/3/'
def index(request):
return HttpResponse("Hello, world. This is the movie app index.")
class movie_list_view(ListView):
model = Movie
template_name = 'movieapp/movies.html'
context_object_name = 'movies'
ordering = ['movie_id']
paginate_by = 100
def movie_poster(request, movie_id):
url = f'{base_url}movie/{Movie.tmdb}?api_key={my_api_key}&language=en-US&page=1'
response = requests.get(url)
tmdb_movies = {'movieposter':response.json()}
return render(request, 'movies.html', context=tmdb_movies)
фильмы. html
{% block content %}
<h1>Movies</h1>
{% for movie in movies %}
<div>
<h3> {{movie.title }}</h3>
<img src="https://image.tmdb.org/t/p/w185_and_h278_bestv2/{{movieposter.poster_path}}">
</div>
{% endfor %}
{% endblock content %}
models.py
from django.db import models
class Movie(models.Model):
movie_id = models.IntegerField()
title = models.CharField(max_length=200)
genres = models.CharField(max_length=150)
imdb = models.CharField(max_length=50)
tmdb = models.CharField(max_length = 50)
class Meta:
ordering = ['movie_id']
def __str__(self):
return self.title