2013-04-14 4 views
2

Alors Django 1.5 n'utilise plus l'appel direct_to_template.Django 1.4 vers Django 1.5 Direct vers le template extra_context

Je suis en train de porter sur certaines URL et j'ai été arrêté par cela.

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/'), 
     }, 
    }, 

Je sais que je peux utiliser

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

, mais je ne sais pas où le extra_context est censé aller. Un aperçu?

Répondre

5

RÉFÉRENCE: 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') 
) 
+0

pourquoi 'utils.autodiscover()'? et quel 'utils' module il se réfère? – furins

+0

Vous n'avez besoin ni d'utlis.autodiscover, ni du décorateur @classonlymethod. Je ne sais pas ce qu'ils font, mais ça marche bien sans eux. – MagicLAMP

1

Modifier l'exemple ci-dessus pour soutenir le passage d'un dictionnaire de valeurs

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'}) 
+0

extra_context serait l'un des kwargs, n'est-ce pas? Je pense que celui-ci serait bon. http://stackoverflow.com/questions/11005733/moving-from-direct-to-template-to-new-templateview-in-django – dtc

1

Pour modifier la réponse de Parth Shah, (je n'ai pas 50 réputation nécessaire pour commenter simplement sur son poste):

Je pense que vous devez changer la ligne

context.update(extra_context)

à

context.update(self.extra_context)

comme extra_context est un attribut de classe.