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

时间:2009-08-25 21:35:40

标签: django django-templates

django template doc提到了扩展模板的以下内容:

{% extends variable %}

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

2 个答案:

答案 0 :(得分:16)

{% 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上的文档。

答案 1 :(得分:6)

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

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