#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