Adding context data to a TemplateView?

9,659 views
Skip to first unread message

Roy Smith

unread,
Apr 22, 2012, 5:20:09 PM4/22/12
to Django users
I'm using a generic TemplateView (django-1.4), but I want to be able to add something to the context.  Is that possible?

The docs at https://docs.djangoproject.com/en/1.4/topics/generic-views/#adding-extra-context talk about "an extra optional parameter, extra_context", but I don't get what they're trying to explain.  I tried the obvious:

    url(r'^about$',
    TemplateView.as_view(template_name='legal_ipsum/about.html',
                         extra_context={'pagename': 'about'})
        ),

in my urls.py file, but that just raises: "TemplateView() received an invalid keyword 'extra_context'".  What am I missing here?

--
Roy Smith



Ejah

unread,
Apr 22, 2012, 5:28:11 PM4/22/12
to Django users
Quotes around extra_context
HTH

On Apr 22, 11:20 pm, Roy Smith <r...@panix.com> wrote:
> I'm using a generic TemplateView (django-1.4), but I want to be able to add something to the context.  Is that possible?
>
> The docs athttps://docs.djangoproject.com/en/1.4/topics/generic-views/#adding-ex...talk about "an extra optional parameter, extra_context", but I don't get what they're trying to explain.  I tried the obvious:

Ejah

unread,
Apr 22, 2012, 5:32:50 PM4/22/12
to Django users
Oh, and an extra set of curly braces:
url(r'^about$',
TemplateView.as_view(template_name='legal_ipsum/about.html',
{"extra_content":{"pagename":"about"}})),

On Apr 22, 11:28 pm, Ejah <ej.huijb...@gmail.com> wrote:
> Quotes around extra_context
> HTH
>
> On Apr 22, 11:20 pm, Roy Smith <r...@panix.com> wrote:
>
>
>
>
>
>
>
> > I'm using a generic TemplateView (django-1.4), but I want to be able to add something to the context.  Is that possible?
>
> > The docs athttps://docs.djangoproject.com/en/1.4/topics/generic-views/#adding-ex...about "an extra optional parameter, extra_context", but I don't get what they're trying to explain.  I tried the obvious:

Buddy Lindsey, Jr.

unread,
Apr 22, 2012, 7:21:29 PM4/22/12
to django...@googlegroups.com
This should help you out with adding extra context to TemplateView

http://godjango.com/15-class-based-views-part-1-templateview-and-redirectview/

Roy Smith wrote:
r...@panix.com <mailto:r...@panix.com>



--
You received this message because you are subscribed to the Google
Groups "Django users" group.
To post to this group, send email to django...@googlegroups.com.
To unsubscribe from this group, send email to
django-users...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.

Fallen Flint

unread,
Apr 4, 2013, 3:44:27 AM4/4/13
to django...@googlegroups.com
Take a look at https://docs.djangoproject.com/en/1.4/topics/generic-views-migration/#extra-context
There's no way for provide an extra_context to a TemplateView. You need to subclass TemplateView and re-implement get_context_data in the way described in aforementioned topic.

Dan Gentry

unread,
Apr 4, 2013, 1:13:48 PM4/4/13
to django...@googlegroups.com
Roy, I agree with Fallen that a subclass of TemplateView is required here.  I have used this technique often.  Dan

class MyTemplateView(TemplateView):
    template_name = 'my_template.html'

    def get_context_data(self, **kwargs):
        context = super(MyTemplateView, self).get_context_data(**kwargs)
        context['custom_variable'] = u'my special data'
        return context

bo...@rukkus.com

unread,
Jul 22, 2015, 3:47:34 AM7/22/15
to Django users
An additional point, if you want to be able to use the view more generically (be able to pass in custom context from your urls.py), I've done the following:

class StaticPageView(TemplateView):
    context = None

    def get_context_data(self, **kwargs):
        context = super(StaticPageView, self).get_context_data(**kwargs)
        context.update(self.context or {})
        return context

Reply all
Reply to author
Forward
0 new messages