Как отобразить случайное видео из файла в Django? - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь сделать случайное отображение видео на моей домашней странице.Пользователь может загрузить видео, и оно будет сохранено в документе на носителе / ​​в документах, а также в наборе данных.Я попробовал приведенный ниже код, и он продолжает выдавать ошибку:

{% load media %}
    {% for doc in document %}
    <video width='320' height= '240' controls>
      <source src="{% media 'doc.document' %}" type='video/mp4'>
      Your browser does not support the video tag.
    </video>
    {% endfor %}
Exception Type: TemplateSyntaxError at /
Exception Value: 'media' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_static
admin_urls
cache
i18n
l10n
log
static
staticfiles
tz

Я удалил if settings.DEBUG: из urls.py, однако это не сработало.

models.py

from django.db import models
from datetime import datetime
from django.contrib.auth.models import User
from django.conf import settings
...
class Document(models.Model):
    title = models.CharField(max_length=100, default='NoTitle')
    description = models.CharField(max_length=255, blank=True)
    document = models.FileField(upload_to='documents/')
    uploaded_at = models.DateTimeField("date published")#(auto_now_add=True)

    creator = models.ForeignKey('auth.User', on_delete=models.CASCADE, blank=True, null=True)

    def __str__(self):
        return self.title

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path("", views.homepage, name="homepage"),
    path("myconta/", views.myconta, name="myconta"),
    path("upload/", views.model_form_upload, name="upload"),
    path("register/", views.register, name="register"),
    path('', include("django.contrib.auth.urls")),
]

#if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

views.py

def homepage(request):
    return render(request=request, template_name="main/home.html", context={"sites": Info.objects.all})
    return render(request=request, template_name="main/home.html", context={"document": Document.objects.all})

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'main.apps.MainConfig',
]

STATIC_URL = '/static/'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Каталоги

MySite
 -main
   -__pycache__
   -migrations
   -static
     -images
      main.css
   -templates
      [all my html code]
    init
    admin.py
    apps.py
    forms.py
    models.py
    tests.py
    urls.py
    views.py
 -media
   -documents
 -mysite
   -pycache
    init.py
    settings.py
    urls.py
    wsgi.py
  db.sqlite3

1 Ответ

0 голосов
/ 20 сентября 2019

в вашем шаблоне измените код так, чтобы он выглядел следующим образом

{% load media %}
{% for doc in document %}
 <video width='320' height= '240' controls>
  <source src="{% media 'doc.document.url' %}" type='video/mp4'>
  Your browser does not support the video tag.
 </video>
{% endfor %}

вы пропустили .url при загрузке видео

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...