2

所以 Django 1.5 不再使用 direct_to_template 调用。

我正在移植一些网址,但我被这个阻止了。

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

我知道我可以使用

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

但我不知道extra_context应该去哪里。有什么见解吗?

4

3 回答 3

5

参考: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')
)
于 2013-04-25T13:13:22.800 回答
1

修改上面的示例以支持传递值的字典

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'})
于 2013-06-01T23:22:30.653 回答
1

修改 Parth Shah 的回答,(我没有必要的 50 声望来简单地评论他的帖子):

我认为您需要更改线路

context.update(extra_context)

context.update(self.extra_context)

因为 extra_context 是一个类属性。

于 2013-12-22T10:23:37.727 回答