У меня была эта проблема несколько раз раньше, но я всегда мог ее решить.На этот раз я не могу.Его просто возвращают:
"Ошибка ключа в потоках / sport_slug 'pk'"
Ошибка в строке 34 в представлениях, которые я выделил ниже:
Views.py:
class StreamSport(ListView):
template_name = "stream/stream-index.html"
context_object_name = 'stream_list'
def get_queryset(self):
self.sport = get_object_or_404(Sport, sport_slug=self.kwargs['sport_slug'])
*self.pk = get_object_or_404(Video, pk=self.kwargs['pk'])*
return Video.objects.filter(sport=self.sport, pk=self.pk)
URLs.py:
app_name = 'streams'
urlpatterns = [
path('', StreamIndex.as_view(), name='stream-index'),
path('<slug:sport_slug>/', StreamSport.as_view(), name='stream-sport'),
path('<slug:sport_slug>/<int:pk>/', StreamDetail.as_view(), name='detail'),
stream-index.html:
<a href="{% url 'streams:detail' video.sport.sport_slug video.pk %}"
Редактировать: As LemayzeurЯ запутался.Ошибка ключа была вызвана попыткой исправить другую ошибку.Я думал, что добился прогресса, когда вместо этого я двигался назад.Первоначальная ошибка, к которой я вернулся, - это ошибка «Обратно для« детализации »с аргументами».
Чтобы уточнить, я пытаюсь создать ListView, в котором перечислены все видео в модели, а затем связать каждое из этих видео со своей собственной страницей сведений.Это само DetailView, которое вызывает у меня некоторую проблему:
class StreamDetail(DetailView):
model = Video
template_name = 'stream/detail.html'
def get_queryset(self):
self.sport = get_object_or_404(Sport, sport_slug=self.kwargs['sport_slug'])
self.pk = Video.objects.filter(pk=self.kwargs['pk'])
return Video.objects.filter(sport=self.sport, pk=self.pk)
Это ошибка, которую он мне дает:
Reverse for 'detail' with arguments '(2,)' not found. 1 pattern(s) tried: ['stream\\/(?P<sport_slug>[-a-zA-Z0-9_]+)\\/(?P<pk>[0-9]+)\\/$']
Сама трассировка крайне бесполезна, и она просто указывает на bootstrapcdnв базовом файле.
stream-index.html:
{% for video in stream_list %}
<div class="card" style="width: 20rem;margin-left: 2rem;">
<img class="card-img-top" src="{{video.headline_image.url}}" alt="Card image cap" style="width: 20rem;">
<div class="card-body" style="width: 18rem;">
<h5 class="card-title"><a href="{% url 'streams:detail' video.id %}">{{video.name}}</a></h5>
<p class="card-text" style="width: 18rem;">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
<a href="{% url 'streams:detail' video.sport.sport_slug video.pk %}" class="btn btn-success">Watch Now</a>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
</div>
{% endfor %}