Как отобразить несколько видео в django
Здесь код работает нормально, но я хочу отображать несколько видео. Здесь отображается только одно видео. При загрузке второго видео, второй видео файл сохраняется, но не отображается. Пожалуйста, помогите мне решить эту проблему. Пожалуйста.
views.py:
def showvideo(request):
lastvideo= Video.objects.all()
form= VideoForm(request.POST or None, request.FILES or None)
if form.is_valid():
form.save()
context= {'lastvideo': lastvideo,
'form': form
}
return render(request, 'master/video.html', context)
forms.py:
class VideoForm(forms.ModelForm):
class Meta:
model= Video
fields= ["name", "videofile"]
models.py:
class Video(models.Model):
name= models.CharField(max_length=500)
videofile= models.FileField(upload_to='videos/', null=True, verbose_name="")
def __str__(self):
return self.name + ": " + str(self.videofile)
video.html:
<html>
<head>
<meta charset="UTF-8">
<title>Upload Videos</title>
</head>
<body>
<h1>Video Uploader</h1>
<form enctype="multipart/form-data" method="post" action="">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Upload"/>
</form>
<br><br>
<video width='400' controls>
<source src='{{videofile.url}}' type='video/mp4'>
Your browser does not support the video tag.
</video>
<br><br>
</p>
</body>
<script>'undefined'=== typeof _trfq || (window._trfq = []);'undefined'=== typeof _trfd && (window._trfd=[]),_trfd.push({'tccl.baseHost':'secureserver.net'}),_trfd.push({'ap':'cpbh-mt'},{'server':'p3plmcpnl487010'},{'id':'8437534'}) // Monitoring performance to make your website faster. If you want to opt-out, please contact web hosting support.</script>
<script src='https://img1.wsimg.com/tcc/tcc_l.combined.1.0.6.min.js'></script>
</html>
urls.py:
path('videos/',views.showvideo,name='showvideo'),
В вашем представлении вы вызываете запрос Video перед сохранением, измените его на следующий:
def showvideo(request):
form= VideoForm(request.POST or None, request.FILES or None)
if form.is_valid():
form.save()
context= {'lastvideo': Video.objects.all(),
'form': form
}
return render(request, 'master/video.html', context)
Здесь, если мы хотим отобразить несколько видео, то добавьте цикл for в этот шаблон
<html>
<head>
<meta charset="UTF-8">
<title>Upload Videos</title>
</head>
<body>
<h1>Video Uploader</h1>
<form enctype="multipart/form-data" method="post" action="">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Upload"/>
</form>
<br><br>
{% for video in lastvideo %}
<tr>
<td>
<video width='400' controls>
<source src='{{video.videofile.url}}' type='video/mp4'>
Your browser does not support the video tag.
</video>
</td>
</tr>
{% endfor %}
<br><br>
</p>
</body>
<script>'undefined'=== typeof _trfq || (window._trfq = []);'undefined'=== typeof _trfd && (window._trfd=[]),_trfd.push({'tccl.baseHost':'secureserver.net'}),_trfd.push({'ap':'cpbh-mt'},{'server':'p3plmcpnl487010'},{'id':'8437534'}) // Monitoring performance to make your website faster. If you want to opt-out, please contact web hosting support.</script>
<script src='https://img1.wsimg.com/tcc/tcc_l.combined.1.0.6.min.js'></script>
</html>