如何使用 Django 的模板扩展变量?

Posted

技术标签:

【中文标题】如何使用 Django 的模板扩展变量?【英文标题】:How do I use Django's template extends variable? 【发布时间】:2010-11-22 19:14:23 【问题描述】:

django template doc 提到以下扩展模板:

% extends variable %

我在哪里定义变量?是来自views.py吗?

【问题讨论】:

【参考方案1】:

% extends % 实际上接受一个字符串——要扩展的模板的位置。

如果您想在 Python 中声明此变量,请使用您的字典将其传递给模板加载器。示例:

import django.http
from django.shortcuts import render_to_response
# ...
INDEX_EXTEND = "index.html"
# ...
def response(request) :
    return render_to_response("myview.html", 'extend': INDEX_EXTEND)

然后在视图中:

% extends extend %

注意'extend' 是在传递给模板的字典中传递的。您当然可以在 .py 文件中的任何其他位置定义变量 - 甚至在字典声明本身中。

请记住,% extends % 也可以这样调用:

% extends "index.html" %

也可以查看Template inheritance 上的文档。

【讨论】:

【参考方案2】:

是的,它只是一个和其他变量一样的上下文变量。

您不需要使用变量 - % extends "main.html" % 完全可以接受,实际上更可取,除非您需要使用模板继承进行大规模动态操作。

【讨论】:

以上是关于如何使用 Django 的模板扩展变量?的主要内容,如果未能解决你的问题,请参考以下文章

Django 如何将自定义变量传递给上下文以在自定义管理模板中使用?

Django 在子模板中扩展公共变量或块

如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?

如何在 % % 之间的 Django 模板中使用变量

Django:如何使用模板变量和 url 标签

如何通过变量/方法将Django模板代码注入模板?