Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 显示数据库中的所有视频时出现问题(QuerySet对象没有属性)_Python_Django - Fatal编程技术网

Python 显示数据库中的所有视频时出现问题(QuerySet对象没有属性)

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

我正在上传一个视频文件到我的网页,我也可以播放。然而,当我想在不同的页面上显示所有视频文件并播放它们时,我得到:AttributeError at/all\u videos

QuerySet对象没有属性“videofile”

我无法找出我做错了什么。Models.py:

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