Hi django folks,
I ran into a hiccup when I was rendering media files in templates during
development. I wanted to render the image and the video that was uploaded
by the user BUT instead of the contents of the image and the video being
rendered, the name of the file was rendered instead.
I am using python 2.7.9 and django 1.8.3. Here are my codes relevant to
the question I'm asking:
settings.py
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'
STATIC_PATH = (os.path.join(BASE_DIR, 'static'),
'/var/www/static/',)
STATICFILES_DIRS = (
STATIC_PATH,
)
MEDIA_URL = '/media/'
my models.py:
class Entry(models.Model):
VIDEO_ENTRY_TYPE = (
('SEMINAR', 'Seminar'),
('LECTURE', 'Lecture'),
('TALK', 'Talk'),
)
user = models.ForeignKey(User)
video = models.FileField(upload_to='video_entries')
entry_type = models.CharField(max_length=100, choices=VIDEO_ENTRY_TYPE)
title = models.CharField(max_length=250)
class EntryForm(ModelForm):
class Meta:
model = Entry
fields = ['video', 'entry_type', 'title']
my views.py:
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.http import HttpResponse
from django.views.generic import ListView
from . models import User, Entry, EntryForm
class IndexView(ListView):
template_name = 'pi_app/index.html'
context_object_name = 'latest_seminars'
def get_queryset(self):
return
Entry.objects.filter(entry_type='SEMINAR').order_by('-pub_date') [:10]
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context['latest_lectures'] =
Entry.objects.filter(entry_type='LECTURE').order_by('-pub_date') [:10]
context['latest_talks'] =
Entry.objects.filter(entry_type='TALK').order_by('-pub_date') [:10]
my urls.py:
from django.conf.urls import url
from django.conf import settings
from django.conf.urls.static import static
from . import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^upload_file/$', views.upload_file, name='upload_file')
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
my template.py:
<!DOCTYPE html>
{% load staticfiles %}
<html>
<head>
<title>Homepage</title>
</head>
<body>
<h1> Welcome {{ user }} </h1>
<!-- SAMPLE BLOCK THAT I WANT THE MEDIA FILES RENDERED -->
{% block seminar %}
<section id="latest_seminars">
<h2>Most Recent Seminars</h2>
{% if latest_seminars %}
<ul>
{% for seminar in latest_seminars %}
<video width="350", height="250", alt="{{
seminar.title }}" controls >
<source src= "{{MEDIA_URL }} {{ seminar.video
}}"/>
</video>
{{ seminar.title }} by {{ seminar.user }}
{% endfor %}
</ul>
{% endif %}
</section>
{% endblock seminar %}
Normally, the video or the image will be rendered. In my case, its not
rendered. What is rendered instead is the name of the movie file
(media/video_entries/name_of _movie_file) or the name of the image file
(media/video_entries/name_of _image_file). All the other variables are
rendered correctly except the media files. What am I missing? Please
enligthen me. Your help is hightly appreciated. Thanks.
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/66cb760a-96d3-4998-beec-1f6a947b9259%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.