Python 显示数据库中的所有视频时出现问题(QuerySet对象没有属性)
我正在上传一个视频文件到我的网页,我也可以播放。然而,当我想在不同的页面上显示所有视频文件并播放它们时,我得到:AttributeError at/all\u videosQuerySet对象没有属性“videofile”我无法找出我做错了什么。Models.py:Python 显示数据库中的所有视频时出现问题(QuerySet对象没有属性),python,django,Python,Django,我正在上传一个视频文件到我的网页,我也可以播放。然而,当我想在不同的页面上显示所有视频文件并播放它们时,我得到:AttributeError at/all\u videosQuerySet对象没有属性“videofile”我无法找出我做错了什么。Models.py: models.py class VideoModel(models.Model): name = models.CharField(max_length=500) videofile = models.FileField(uploa
models.py
class VideoModel(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)
Views.py:
views.py
class ShowVideosView(View):
def get(self, request):
form = VideoForm()
lastvideo = VideoModel.objects.last()
videofile = lastvideo.videofile
return render(request, 'videos.html', {'videofile': videofile, 'form': form})
def post(self, request):
form = VideoForm(request.POST or None, request.FILES or None)
lastvideo = VideoModel.objects.last()
videofile = lastvideo.videofile
form = VideoForm(request.POST or None, request.FILES or None)
if form.is_valid():
name = form.cleaned_data['name']
videofile = form.cleaned_data['videofile']
new_video = VideoModel(name=name, videofile=videofile)
new_video.save()
context = {'videofile': videofile, 'form': form}
return render(request, 'videos.html', context)
class ListOfVideosView(View):
def get(self, request):
all_videos = VideoModel.objects.all()
videofile = all_videos.videofile
context = {'all_videos': all_videos, 'videofile': videofile}
return render(request, 'all_videos.html', context)
all_videos.html:
all_videos.html
{% for video in all_videos %}
<video width='400' controls>
<source src='{{MEDIA_URL}}{{videofile}}' type='video/mp4'
Your browser does not support the video tag.
</video>
{% endfor %}
all_videos.html
{%用于所有_视频中的视频%}
您的错误看起来就是这样的所有视频
都不是VideoModel
的实例,因此您无法从中获得相同的属性
视频视图(视图)的类列表:
def get(自我,请求):
all_videos=VideoModel.objects.all()
videofile=all_videos.videofile#这是引发错误的那一行。
上下文={'all_videos':all_videos,'videofile':videofile}
返回渲染(请求'all_videos.html',上下文)
看起来您要做的是访问查询集中每个VideoModel
的videofile
属性。如果这是正确的,那么将视频列表视图和HTML更改为这样可能会有所帮助
views.py
视频视图(视图)的类列表:
def get(自我,请求):
all_videos=VideoModel.objects.all()
上下文={'all_videos':all_videos}
返回渲染(请求'all_videos.html',上下文)
all_videos.html
{%用于所有_视频中的视频%}
您的浏览器不支持视频标记。
{%endfor%}
请添加完整的错误跟踪文件“/home/borys/Desktop/borys\u works/blog\u django/src/posts/views.py”,第168行,在get videofile=all\u videos.videofile AttributeError:“QuerySet”对象没有属性“videofile”谢谢您的时间和精力!它确实有帮助,我希望在你的未来会有伟大的事情等着你:)
{% for video in all_videos %}
<video width='400' controls>
<source src='{{ MEDIA_URL }}{{ video.videofile }}' type='video/mp4'>
Your browser does not support the video tag.
</video>
{% endfor %}