Тип объекта 'Видео' не имеет атрибута 'video_file' django - PullRequest
1 голос
/ 23 июня 2019

Я пытаюсь отобразить mp4 на своем сайте и помещаю его в контекст, но по какой-то причине, когда я захожу на страницу, я получаю следующее: «тип объекта« видео »не имеет атрибута« video_file »

Пробовал несколько вещей, но ни одна из них не сработала.

Views.py

def movie(request, movie_id):
    movie = get_object_or_404(Video, title=movie_id) # This only gets the movie name
    mp4 = Video.video_file.url
    context = {'video': movie, 'mp4':mp4}
    return render(request, template_name=f'uploadvideos/movie.html', context=context)

models.py

class Video(models.Model):
    title = models.CharField(max_length=40, blank=False)
    video_file = models.FileField(name="Upload a mp4 file",
                                  upload_to=f"uploadvideos/video",
                                  validators=[FileExtensionValidator(['mp4'])],
                                  blank=False)

    def __str__(self):
        return self.title

movie.html

    <h1 class="movietitle">{{ video }}</h1>
    <div class="videoDetails">
        <video width="700" height="430" controls>
            <source src="{{ mp4 }}" type="video/mp4">
        </video>
    </div>

Я ожидал, что видео будет показано, но вместо этого я получил эту ошибку: 'Тип объекта' Видео 'не имеет атрибута' video_file '

1 Ответ

0 голосов
/ 23 июня 2019

Video относится к Video классу , поскольку Video экземпляр здесь называется movie, поэтому вы должны использовать:

def movie(request, movie_id):
    movie = get_object_or_404(Video, title=movie_id)
    context = {'video': movie, 'mp4': <b>movie.video_file.url</b> }
    return render(request, 'uploadvideos/movie.html', context)

Ваше предположение:

# This only gets the movie name

неверно.Это загрузит объект Video.Если вы визуализируете этот объект, он вызовет функцию str(..) для этого объекта, и это действительно вернет заголовок, но это не означает, что movie само по себе являетсястрока.

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