2016-07-18 5 views
0

Я хочу установить переменную один раз и использовать ее дважды в двух разных блочных тегах. Это так, как я это сделал:Шаблоны Django: используйте переменную в теге блока

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

Объем для вас variable 'title' - это блок, где было объявлено – Gocht

+0

Интересно, переименовываете ли вы' {% block title%} 'на что-то еще, что произойдет? – Cheng

+4

Если вы расширите шаблон. Он не обрабатывает и не обрабатывает все, что находится за пределами блока. Вот как они работают – Sayse

ответ

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 %} вернет вам «что-то». Вы можете использовать его повсюду в своем шаблоне.

 Смежные вопросы

  • Нет связанных вопросов^_^