Вы поместили ссылку в свой шаблон индекса <a href="{% url 'video_detail' video.slug %}">
. Но в представлении HomePage
вы нигде не устанавливаете video
. Это означает, что video.slug
оценивается как пустая строка ''
, которая объясняет with arguments '('',)'
часть сообщения об ошибке.
Вы можете решить проблему, заменив video.slug
на имя видео, которое вы хотите создать ссылку, например,
<a href="{% url 'video_detail' 'name-of-title' %}">
Если вы хотите использовать video.slug
вместо 'name-of-title'
в своем шаблоне, тогда вам нужно добавить video
в контекст шаблона. Например, вы можете сделать:
from django.shortcuts import get_object_or_404
class HomePage(TemplateView):
template_name = 'index.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['video'] = get_object_or_404(Video, slug='name-of-title')
return context
Затем в index. html вы можете сделать <a href="{% url 'video_detail' video.slug %}">
.
Или вы можете добавить все видео в контекст шаблона.
class HomePage(TemplateView):
template_name = 'index.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['videos'] = Video.objects.all()
return context
Затем вы можете oop просматривать видео в вашем шаблоне.
{% for video in videos %}
<a href="{% url 'video_detail' video.slug %}">{{ video.title }}</a>
{% endfor %}