syndication.Feed.get_context_data()

Feed.get_context_data(**kwargs)

There is also a way to pass additional information to title and description templates, if you need to supply more than the two variables mentioned before. You can provide your implementation of get_context_data method in your Feed subclass. For example:

from mysite.models import Article
from django.contrib.syndication.views import Feed

class ArticlesFeed(Feed):
    title = "My articles"
    description_template = "feeds/articles.html"

    def items(self):
        return Article.objects.order_by('-pub_date')[:5]

    def get_context_data(self, **kwargs):
        context = super(ArticlesFeed, self).get_context_data(**kwargs)
        context['foo'] = 'bar'
        return context

And the template:

Something about {{ foo }}: {{ obj.description }}

This method will be called once per each item in the list returned by items() with the following keyword arguments:

  • item: the current item. For backward compatibility reasons, the name of this context variable is {{ obj }}.
  • obj: the object returned by get_object(). By default this is not exposed to the templates to avoid confusion with {{ obj }} (see above), but you can use it in your implementation of get_context_data().
  • site: current site as described above.
  • request: current request.

The behavior of get_context_data() mimics that of generic views - you’re supposed to call super() to retrieve context data from parent class, add your data and return the modified dictionary.

doc_Django
2016-10-09 18:39:42
Comments
Leave a Comment

Please login to continue.