Использование контекстной переменной django в качестве атрибута html-тега

Я пытаюсь понять, как контекстные переменные работают в шаблонах.

Обязательно ли использовать кавычки вокруг контекстной переменной. Например, если мой код выглядит следующим образом

view:

def view(req):
    return render(req, 'index.html', {'class': 'style'}


html:

<h1 class="{{class}}">hello world</h1>

я видел вышеуказанное использование в нескольких местах.

Здесь я сомневаюсь, поскольку это строковая переменная, можно ли использовать ее без кавычек, например?

<h1 class={{class}}>Hello World</h1>

Есть ли причина использовать эти кавычки? потому что эти две работают одинаково. Я что-то упустил?

В примере {'class': 'style'} 'class' не является строковой переменной как таковой, это имя пары Имя/Значение, которая является элементом объекта типа словарь в python. В словарях имя также называется "ключом"

Ключ не обязательно должен быть строкой. В python это может быть любой неизменяемый тип (включая числа и кортежи... если кортеж содержит только строку, числа и кортежи и т.д.). Значение может быть практически любым, даже другим словарем!

В примере <h1 class="{{class}}">hello world</h1> кавычки присутствуют потому, что HTML требует кавычек для установки атрибута class. Когда определяется значение 'style', кавычки указывают на то, что значение является строкой, но они не являются частью возвращаемой строки, поэтому они должны быть явно включены в шаблон.

С другой стороны, если вы зададите {'class': ''style''}, внутренние кавычки будут включены в строку, и вы сможете использовать <h1 class={{class}}>hello world</h1>

Вернуться на верх