I have a model where I upload a video, i want to display the same in the browser but somehow I am not able to. Kindly help me.
I made an app with the name deploy, where I am uploading the video and saving it. Kindly tell me where I am doing wrong and what should be done here. I want the video which was uploaded should be displayed on the page and there should be a option for download as well. I shall be extremely thankful for the help.
My models.py file:
class Video(models.Model): Video_Description= models.CharField(max_length=500) slug = models.SlugField(unique=True) videofile= models.FileField(upload_to='deploy/videos/%Y/%m/%d/', null=True, verbose_name="") timestamp = models.DateTimeField(auto_now_add=True) class Meta: ordering = ['-timestamp'] def get_absolute_url(self): return reverse ("deploy:detail", kwargs={"slug":self.slug}) def __str__(self): return self.Video_Description + ": " + str(self.id) My views.py file is:
class VideoDetailView(DetailView): queryset = Video.objects.all() class VideoListView(ListView): paginate_by = 10 # <app>/<modelname>_list.html def get_queryset(self, *args, **kwargs): qs = Video.objects.all() print(self.request.GET) query = self.request.GET.get("q", None) if query is not None: qs = qs.filter( Q(Video_Description__icontains=query) | Q(videofile__icontains=query)) return qs def get_context_data(self, *args, **kwargs): context = super(VideoListView, self).get_context_data(*args, **kwargs) return context video_list.html file is:
{% extends "base.html" %} {% load static %} <body> <link rel="stylesheet" href="{% static 'deploy/cafeteria_cut.mp4' %} "> {% block content %} {% include "result/navbar.html" %}<br/> {% include "result/sidebar.html" %}<br/> {% include "result/calendar.html" %}<br/> <div style="margin-left: 10%"> <button type="button" class="btn btn-secondary btn-lg"><a href="{% url 'deploy:create' %}" style='color:white'>Upload Video</a></button> </div> {% for object in object_list %} <div class="container" style="margin-left: 10%; align-items: center;"> <h2> </br> <a href="{{ object.get_absolute_url }}"> {{ object.Video_Description }} </a> </br> </h2> </br> <a href="" style="align-items: center;"> {{ object.videofile}} </a> </br> <br><br> <video width='400' controls> <source src="{% static 'deploy/youtubeVideo_cut20.mp4' %}" type='video/mp4'> Your browser does not support the video tag. </video> <br><br> {% empty %} {% if request.GET.q %} <p style="padding-left: 20%; font-size: 70px">No Result Found </p> {% else %} <p style="padding-left: 20%; font-size: 70px"> No Result Yet. {% endif %} {% endfor %} {% endblock content %} I am extremely sorry i failed to mention a very important thing, in my video_list.html file, when I do:
<br><br> <video width='400' controls> <source src="{% static 'deploy/youtubeVideo_cut20.mp4' %}" type='video/mp4'> Your browser does not support the video tag. </video> <br><br> I am getting video displayed on the browser.
src="{{ object.videofile.url }}"instead ofsrc="{% static 'deploy/object.videofile' %}"