Django-将上下文注入base.html

时间:2018-07-20 08:26:28

标签: django django-views

我正在尝试将上下文(single_well_info)注入我的 base.html 中。通过 contextual_main.html

扩展了基础

views.py

class ContextualMain_DetailView(DetailView):
    template_name = 'contextual_main.html'
    context_object_name = 'single_well_info'
    model = models.WellInfo

context_processor.py

from contextual.views import ContextualMain_DetailView

def add_context_to_base(request):

    return {'single_well_info': # context instance}

调用ContextualMain_DetailView.as_view()时,会将模型类实例single_well_info注入 contextual_main_html

我决定创建一个context_processor,以将完全相同的上下文注入 base.html

如何修改我的context_processor.py以在single_well_info内获得完全相同的模型类实例ContextualMain_DetailView

1 个答案:

答案 0 :(得分:0)

一个可行的解决方案,您可以在base.html中定义一个integers,然后可以在子模板block中对其进行扩展,然后可以使用相同的模型实例。作为参考,可以在https://docs.djangoproject.com/en/1.7/topics/templates/#template-inheritance

上阅读模板继承。

因此,假设您需要在base.html中使用contextual_main.html,因为您希望将其显示为页面标题,并且页面标题是在base.html中定义的。做这样的事情:

base.html:

single_well_info

contextual_main.html:

{% block title %} My Title {% endblock %}

现在,您可以从其子模板覆盖{% extends 'base.html' %} {% block title %} {{ single_well_info }} {% endblock %} 中的任何内容,并且可以访问该上下文变量。您不必触摸context_processors.py!