我想要的是设置一次变量并在两个不同的块标签中使用它两次。这就是我这样做的方式:
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 %}
它会完美呈现。
我错过了什么,或者这真的很愚蠢,我应该尝试一些非常不同的东西?
提前致谢。
答案 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 %}
会返回“某事”。您可以在模板中的任何位置使用它。