Question

So Django 1.5 no longer uses the direct_to_template call.

I am porting over some urls and I got stopped by this.

url(r'^system_settings/$',
    'django.views.generic.simple.direct_to_template',
    {
        'template': 'helpdesk/system_settings.html',
        'extra_context': {
            'ADMIN_URL': getattr(settings, 'ADMIN_URL', '/admin/'),
        },
    },

I know I can use

url(r'^help/context/$',
    TemplateView.as_view(template_name='helpdesk/system_settings.html')...

but I do not know where the extra_context is supposed to go. Any insight?

Was it helpful?

Solution

REFERENCE: https://docs.djangoproject.com/en/dev/topics/class-based-views/generic-display/#adding-extra-context

from django.views.generic import TemplateView
from django.utils.decorators import classonlymethod

utils.autodiscover()
class ExtraContextTemplateView(TemplateView):

    @classonlymethod
    def get_context_data(self, **kwargs):
        context = super(ExtraContextTemplateView, self).get_context_data(**kwargs)
        context['ADMIN_URL'] = getattr(settings, 'ADMIN_URL', '/admin/')
        return context

urlpatterns = patterns('',
    url(r'^help/context/$', ExtraContextTemplateView.as_view(template_name='helpdesk/system_settings.html')
)

OTHER TIPS

Modifying the above example to support passing a dictionary of values

class ExtraContextTemplateView(TemplateView):

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

urlpatterns = patterns('',
    url(r'^help/context/$',
        ExtraContextTemplateView.as_view(template_name='helpdesk/system_settings.html', 
                                         extra_context={'title': 'Help-System Settings'})

To amend Parth Shah's answer, (I do not have the requisite 50 reputation to simply comment on his post):

I think you need to change the line

context.update(extra_context)

to

context.update(self.extra_context)

as extra_context is a class attribute.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top