Не найдено ни одного совпадения в /videos/list/ Reverse для ‘list_videos’. ‘list_videos’ не является допустимой функцией просмотра или именем шаблона

#python #django #django-models #django-forms #django-views

#python #django #django-модели #django-формы #django-просмотры

Вопрос:

Ну, я пытаюсь создать плейлист, очень похожий на YouTube. Но список воспроизведения может быть создан только суперпользователем из панели администратора, а другой пользователь может видеть только этот список воспроизведения и видео в списке воспроизведения. Когда я подумал, что я закончил, внезапно возникла эта ошибка. Я не знаю, где я делаю ошибку. Пожалуйста, помогите мне решить эту проблему.

videos/models.py

 class VideosList(models.Model):

    list_title = models.CharField(max_length=255)
    list_cover = models.ImageField(upload_to='list cover', height_field=None, width_field=None, max_length=None,blank =True)
    create_date = models.DateField(default = timezone.now)

    def __str__(self):
        return self.list_title

class VideosModel(models.Model):

    
    videos_lists = models.ForeignKey(VideosList,on_delete=models.CASCADE) 
    video_title = models.CharField(max_length=250)
    video_url = models.URLField(max_length=1200)
    video_discription = models.TextField()
    create_date = models.DateField(default = timezone.now)


    def __str__(self):
        return self.video_title 
  

videos/views.py

 class VideosListView(ListView):
    model = VideosList
    context_object_name = 'videos_lists'  
    template_name = "videos/videos_lists.html"

    def get_queryset(self):
        return VideosList.objects.filter(create_date__lte=timezone.now()).order_by('-create_date')





class VideosModelListView(ListView):
    model = VideosModel
    template_name = "videos/list_videos.html"
    context_object_name = 'videos_list'  

    def get_queryset(self,*args, **kwargs):
        videoslist = get_object_or_404(VideosList, list_title=self.kwargs.get('list_title'))
        return VideosModel.objects.filter(videos_lists=videoslist).order_by('-create_date')
  

videos/urls.py

 app_name = 'videos'

urlpatterns = [
    path('list/',views.VideosListView.as_view(),name ='videos_playlist'),
    path('list/<str:list_title>/',views.VideosModelListView.as_view(),name ='list_videos'),
]
  

videos/videos_list.html

 {% extends 'pages/videos.html' %}
{% block content %}
{% for all_lists in videos_lists %}
<p style='text-align:center'><img src="{{ all_lists.list_cover.url }}" alt="No cover" height="450px" width="550px" ></p>
#This h2 line generating error and I dont know how to fix it.
<h2 style='text-align:center'>Title :<a href="{% url 'list_videos' all_lists.videos_lists.list_title %}"> {{ all_lists.list_title }}</a></h2> 

        <div class="date">
            <p style='text-align:center'>
                Published on: {{ all_lists.create_date|date:"D M Y" }}
            </p>
         </div> 
<br></br>
{% endfor %}
{% endblock content %}
  

videos/list_videos.html

 {% extends 'pages/videos.html' %}
{% block content %}
<h1 style='text-align:center'>List : {{ view.kwargs.list_title }}</h1>
{% for all_videos in videos_list %}
<h2 style='text-align:center'>{{ all_videos.videos_lists }}</h2>
<p style ='text-align:center'>
<object style="height: 390px; width: 640px"><param name="movie" value=""><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="{{all_videos.video_url}}" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"></object>
</p>
<p style ='text-align:center'>
Discription :{{all_videos.discription}}
</p>
        <div class="date">
            <p style='text-align:center'>
                Published on: {{ all_videos.create_date|date:"D M Y" }}
            </p>
         </div> 
<br></br>
{% endfor %}

{% endblock content %}
  

Ответ №1:

В вашем videos/videos_list.html обновите <a> тег следующим образом,

 <a href="{% url 'videos:list_videos' all_lists.videos_lists.list_title %}"> {{ all_lists.list_title }}</a>
  

Комментарии:

1. Я только что обновил это, и теперь я получаю следующую ошибку: NoReverseMatch в /videos/list/ Reverse для ‘list_videos’ с аргументами ‘(«,)’ не найден. попробовано 1 шаблон (ы): [‘videos/list/(?P<list_title>[^/] )/$’]

2. что-то не так с этим параметром all_lists.videos_lists.list_title в <a> теге. Отладьте это, напечатав значение в консоли.

3. Я пытался, но он показывает мне следующую ошибку в оболочке: AttributeError: объект ‘ForwardManyToOneDescriptor’ не имеет атрибута ‘list_title’

4. Я на самом деле не знаю, как это исправить. вот почему я прошу о помощи.

5. Этот параметр all_lists.list_title не должен быть all_lists.videos_lists.list_title