Django如何访问已上传的视频

0 投票
2 回答
753 浏览
提问于 2025-04-17 08:20

我已经把一个视频上传到Django上,一切都运行得很好……但是我需要在视图中显示这个视频……Django无法访问它。
有没有什么办法让Django模板能看到我上传的文件呢?

modles.py :

class VideoData(models.Model):

    title = models.CharField(max_length=200)
    file = models.FileField(upload_to='vids'  )

forms.py :

class UploadFileForm(forms.Form):
    title = forms.CharField(max_length=50)
    file  = forms.FileField()

还有在template.html中:

<video width="320" height="240" controls="controls">
  <source src="vids/name.mov"  type="video/mov" />
 </video>

它显示的是一个空的视频播放器。

我是不是做错了什么?

请帮帮我。

2 个回答

1

你的视频已经上传到 media_root/vid 这个文件夹里(你可以在文件系统里查看确认一下)。所以当你在模板中调用这个视频时,应该在你的视频图片前面加上媒体的路径。(这样你的网址就可以是 /media/vids/name.mov)

我还注意到你在这里写了死的(固定的)文件名,建议你用下面这样的方式来处理。

<video width="320" height="240" controls="controls">
  <source src="{{MEDIA_URL}}{{my_video_data.file}}"  type="video/mov" />
 </video>

要在这里使用 MEDIA_URL,你需要通过上下文处理器来运行你的上下文变量,看看 django.shortcuts.render 方法。

1

假设在模板的上下文中有一个叫 vidVideoData 实例,你应该使用:

<video width="320" height="240" controls="controls">
  <source src="{{vid.file.url}}"  type="video/mov" />
 </video>

要把这个 VideoData 实例添加到模板的上下文中,你的视图应该像这样:

from django.shortcuts import render_to_response
from models import VideoData

def show_video(request):
    vid = VideoData.objects.get(id=1) # replace with correct query
    return render_to_response("template.html", {"vid":vid})

撰写回答