Django模板:在块标记中使用变量

时间:2016-07-18 15:35:27

标签: django django-templates

我想要的是设置一次变量并在两个不同的块标签中使用它两次。这就是我这样做的方式:

something.html

{% extends "base.html" %}

{% with title="Hellville De Luxe" %}
  {% block title %}{{ title }}{% endblock %}
  {% block description %} {{ title }} {% endblock %}
{% endwith %}

base.html

<title>{% block title %}{% endblock %}</title>
<meta name="description" content="{% block description %}{% endblock %}">

没有用,我想知道为什么。我以为Django会用它的值替换变量。如果我用字符串替换{{ title }},就像这样:{% block title %}Hats are cool{% endblock %}它会完美呈现。

我错过了什么,或者这真的很愚蠢,我应该尝试一些非常不同的东西?

提前致谢。

1 个答案:

答案 0 :(得分:0)

最简单的方法是定义模板标签。转到你的模板标签目录创建一些py文件,让我们说define_variable_tag.py;

from django.template import Library
register = Library()
somevariable = "first_text"
@register.simple_tag
def define_variable(variable):
    global somevariable
    somevariable = variable
    return somevariable

@register.simple_tag
def get_variable():
    global somevariable
    return somevariable

在模板中,您应该在模板的开头加载模板标记{% load define_variable_tag %},然后就可以像这样使用它们;

{% define_variable "something "%}
 <h3>Some Text</h3>
 {% get_variable %}

{% get_variable %}会返回“某事”。您可以在模板中的任何位置使用它。