Django-如何在base.html中传递上下文?

时间:2018-07-20 05:58:14

标签: html django django-views django-context

我有 well_list.html ,看起来像这样:

enter image description here

单击其中一行将转到此页面:

enter image description here

上面的页面使用两个html文件: base.html + contextual_main.html 。 基座具有侧边栏导航,后一个导航从基座延伸。在我的 views.py 中,我可以像这样轻松地将上下文数据传递到 contextual_main.html 中:

views.py

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

contextual_main.html

<button type="button" class="btn btn-default" data-container="body" data-toggle="popover">
  <a href="{% url 'contextual:bha' pk=single_well_info.api %}">BHA</a>
</button>

我也需要将上下文single_well_info注入 base.html 中。因此,我尝试以与contextual_main.html相同的方式注入它,但无法正常工作。我该怎么办?

编辑---------------------------------------------- -----------------------

base.html:

  <body class="nav-md">
    <div class="container-fluid body">
      <div class="main_container">
        <!-- side bar -->
        <div class="col-md-3">
          <div class="left_col scroll-view">
            <!-- sidebar menu -->
            <div id="sidebar-menu" class="main_menu_side hidden-print main_menu">
              <div class="menu_section">
                <ul class="nav side-menu">
                  <li><a href="{% url 'well_list' %}"><i class="fa fa-list-ol"></i> Well List </a>
                  </li>
                  <li><a><i class="fa fa-bookmark"></i> My Wells </a>
                  </li>
                  <li><a><i class="fa fa-dashboard"></i> Dashboard </a>
                  </li>
                  <li><a><i class="fa fa-edit"></i> Contextual <span class="fa fa-chevron-down"></span></a>
                    <ul class="nav child_menu">
                      <li><a href="{% url 'contextual:bha' pk=single_well_info.api %}">BHA</a></li>
                      <li><a href="">Integrity Test</a></li>
                      <li><a href="">Casing</a></li>
                      <li><a href="">Cementing</a></li>
                      <li><a href="">Consumables</a></li>
                      <li><a href="">Daily Ops</a></li>
                      <li><a href="">Logging Data</a></li>
                      <li><a href="">Daily Cost</a></li>
                      <li><a href="">Mud</a></li>
                      <li><a href="">Equipments</a></li>
                      <li><a href="">Pumps</a></li>
                      <li><a href="">Survey</a></li>
                      <li><a href="">Time Log</a></li>
                      <li><a href="">Vol & Losses</a></li>
                      <li><a href="">Weather</a></li>
                      <li><a href="">Well Cond</a></li>
                      <li><a href="">Personnels</a></li>
                    </ul>
                  </li>
                  <li><a><i class="fa fa-clock-o"></i> Real Time <span class="fa fa-chevron-down"></span></a>
                    <ul class="nav child_menu">
                      <li><a href="">Operation</a></li>
                      <li><a href="">Beliefs and Alerts</a></li>
                      <li><a href="">Drilling Optimization</a></li>
                    </ul>
                </ul>
              </div>
            </div>
          </div>
        </div>
        <!-- /side bar -->

        <div class="right_container">
          <div class="container-fluid">
            {% block content %} {% endblock %}
          </div>
        </div>
      </div>
    </div>

  </body>

当我在 base.html 中编写编辑<a href="">时,我的PyCharm IDE识别了contextual:bha自变量,但无法识别pk=single_well_info.api自变量,这就是麻烦。在我看来,当 base.html 通过 views.py 的{{ 1}}通话

1 个答案:

答案 0 :(得分:0)

您可能正在每个页面中扩展 base.html 。因此在每个视图函数/类中传递 single_well_info_context 绝对不是一件容易的事。

您想在上下文中添加 single_well_info ,以使其在所有页面中可用。

您需要打开settings.py并将新的上下文添加到TEMPLATE_CONTEXT_PROCESSORS:

'context_processors': [
        ...
        # add a context processor
        'my_app.context_processor.single_well_info',

    ],

single_well_info 的功能类似于:

def single_well_info(request):
    return {
        'api':"Hello",
    }