Django如何访问已上传的视频
我已经把一个视频上传到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
假设在模板的上下文中有一个叫 vid
的 VideoData
实例,你应该使用:
<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})