如何在 get_context_data RSS Feed django 2.2 中访问数据
How to access data in get_context_data RSS Feed django 2.2
我正在尝试访问由 LatestVideosFeed
中修改后的 'get_context_data' 函数 return 编辑的上下文字典,以便我可以在 'news feed' 中使用它我正在尝试制作,因为 returned 的上下文包含视频的作者。
我一直在关注这些文档 https://docs.djangoproject.com/en/2.2/ref/contrib/syndication/,但我无法弄清楚如何从 get_context_data(self, item, **kwargs):
访问 return 的上下文字典它有效,当我在之前进行调试打印时return 它 return 是一个字典,最后一个条目是上传视频的用户。调试打印是 print(context['author'])
,每次与 Feed 交互时都如预期的那样 return。
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 %}
我仔细阅读了我提供的文档,注意到 SyndicationFeed 允许您添加项目,其中一个参数是 author_name
,因此我将 get_context_data
函数替换为 item_author_name
函数返回 item.author
和 Boom!我通过模板中的 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
我正在尝试访问由 LatestVideosFeed
中修改后的 'get_context_data' 函数 return 编辑的上下文字典,以便我可以在 'news feed' 中使用它我正在尝试制作,因为 returned 的上下文包含视频的作者。
我一直在关注这些文档 https://docs.djangoproject.com/en/2.2/ref/contrib/syndication/,但我无法弄清楚如何从 get_context_data(self, item, **kwargs):
访问 return 的上下文字典它有效,当我在之前进行调试打印时return 它 return 是一个字典,最后一个条目是上传视频的用户。调试打印是 print(context['author'])
,每次与 Feed 交互时都如预期的那样 return。
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 %}
我仔细阅读了我提供的文档,注意到 SyndicationFeed 允许您添加项目,其中一个参数是 author_name
,因此我将 get_context_data
函数替换为 item_author_name
函数返回 item.author
和 Boom!我通过模板中的 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