Как получить доступ к данным в get_context_data RSS Feed django 2.2

Я пытаюсь получить доступ к контекстному словарю, который возвращается измененной функцией get_context_data в LatestVideosFeed поэтому я могу использовать его в "ленте новостей", которую пытаюсь создать, потому что возвращаемый контекст содержит автора видео. Я следил за этими документами https://docs.djangoproject.com/en/2.2/ref/contrib/syndication/ и не могу понять, как получить доступ к контекстному словарю, который возвращается из get_context_data(self, item, **kwargs): Это работает, и когда я выполняю отладочную печать непосредственно перед возвратом, он возвращает словарь с последней записью в качестве пользователя, загрузившего видео. отладочная печать print(context['author']) который возвращается, как и ожидалось, при каждом взаимодействии с фидом.

feeds.py

class LatestVideosFeed(Feed):
    link = '/video-feeds/'
    description = 'New Video Posts'

    def items(self):
        return VideoPost.objects.all()

    def get_context_data(self, item, **kwargs):
        context = super().get_context_data(**kwargs)
        context['author'] = item.author
        print(context['author'])
        return context

    def item_title(self, item):
        return item.title

    def item_description(self, item):
        return item.description

    def item_link(self, item):
        return reverse('video_post', args=[item.pk])

views.py

def video_list(request):
    feeds = feedparser.parse('http://localhost:8000/profs/video-feeds')
    return render(request, 'vids/video_list.html', {'feeds': feeds})

шаблон

{% for thing in feeds.entries %}
        <h1>Author</h1><br>
        {{thing.author}} <-- Nothing is printed here
        <h1>Title</h1>
        {{thing.title}}<br>
        <h1>Description</h1>
        {{thing.summary}}<br>
        <h1>Video Link</h1>
        <a href="{{thing.link}}">{{thing.title}}</a><br>
{% endfor %}


1 ответ

Решение

Я прочитал немного больше в предоставленных мною документах и ​​заметил, что SyndicationFeed позволяет вам добавлять элементы, один из параметров был author_nameтак я заменил get_context_data функция с item_author_name функция, которая вернулась item.author и бум! Я получил к нему доступ через feeds.entries цикл в шаблоне (старый и новый код ниже для лучшего контекста)

# Old Code
def get_context_data(self, item, **kwargs):
        context = super().get_context_data(**kwargs)
        context['author'] = item.author
        print(context['author'])
        return context 
# New Code
def item_author_name(self, item):
        print('Being Called')
        return item.author
Другие вопросы по тегам