【问题标题】:How can I use a variable from views.py in a base template for multiple templates?如何在多个模板的基本模板中使用 views.py 中的变量?
【发布时间】:2020-09-22 07:54:28
【问题描述】:

在一个 Django 应用程序中,我有几个结构相似的 html 页面。我已经为我的所有项目使用了 base_site.html 模板,但对于这些其他页面,我想使用第二个模板来创建表格。这些表可能比其他表有更多或更少的行和列。 我的想法是views.py 中的函数将发送任何给定页面的标题列表以及数据字典以填充表格,然后在 html 页面中我将迭代标题列表以放置标题然后我会迭代 dict 以用数据填充表。

我怎样才能有一个 table-template.html 来使用 headers 中的每个函数的变量 views.py 每当它们被调用时?

类似table-template.html

<h1>TEST</h1>
    <table>
        <tr bgcolor="#ccc">
            <th>{% for h in headers %} {{ h }} {% endfor %}</th>
        </tr>
    </table>

考虑到views.py 中的每个函数都会返回自己的headers 列表 那么如何在任何html页面中使用它

{% extends "admin/base_site.html" %}
{% load static %}

{% block content %}

{% include "table-template.html" %}
{% load static %}
{% for key,value in mydict.items %}
 <table> 
  <tr>
    <td>{{ value }}</td>
  </tr>
</table>
{% endfor %}

【问题讨论】:

    标签: django django-views django-templates


    【解决方案1】:

    table-template.html 可以稍作改动,因为您希望标签中的每个值

    <h1>TEST</h1>
        <table>
            <tr bgcolor="#ccc">
                {% for h in headers %}
                <th> {{ h }} </th>
                {% endfor %}
            </tr>
        </table>
    

    这将为您创建正确的表格标题。您可以从上下文字典中的视图渲染方法发送标题列表。

    如果这没有给出您正在寻找的完整答案,请随时发表评论。

    【讨论】:

      【解决方案2】:

      我实际上设法通过创建一个继承我的base_site.html 的模板找到了解决方案,而在我的所有其他模板上我将继承我的new_template.html。所以这是一种祖父模板继承。 我只是在模板中包含了我想要的所有变量(它们在views.py 中的所有函数中都相同命名),当模板在新页面中扩展时,它会从views.py 中的相应函数中获取变量的值.

      【讨论】:

      • 听起来不错,您还可以通过渲染函数中的上下文从后端传递模板名称,并动态包含模板名称。这样,您将有更多的权力和结构来选择您的部分模板。
      • 我们通常将您包含在其他模板中的模板称为部分html。并将它们命名为_templatename.htmlpartial_templatename.html
      • 这听起来很有趣。我想看看它是如何工作的一个例子。但是如果你包含一个模板而不是扩展(我假设这就是你的意思)你不能有不同的块吗?
      猜你喜欢
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      相关资源
      最近更新 更多