Передать json-объект в html-форму для POST-запроса в Django

Данный пост это скорее сообщение о проблеме и ее решении, чем вопрос. Но вопрос тоже будет.

Предположим, по какой-то причине Вам нужно для POST-запроса использовать именно HTML-форму. В этом случае, Вы разумеется воспользуетесь языком шаблонов Django и будете передавать желаемые значения в виде переменных, заключенных в двойные фигурные скобки. Т.е. формат синтаксиса такой будет такой <... value={{ variable }}>.

И тут нас поджидает сюрприз. А именно, переданный в переменной json-объект будет обрезан по первому ключу. Т.е., допустим, variable = ['param_0':4, 'param_1':5]. Результат: "['param_0':4,"...

Великолепно.

Забегая вперед, скажем, что дело конечно же не в json. Будет обрезана любая строка - по первому пробелу.

variable = [1, 2, 3] --> '[1,'.

variable = 'param_0 - это параметр' --> 'param_0'.

Переходя к решению, надо сказать, что в процессе не возникает идеи "А не попробовать ли кавычки?". Потому что, очевидно, по всем канонам, тогда ваша переменная станет просто строкой и будет передано не содержимое переменной (ссылается, да), а буквально "{{ variable }}".

Но нет, решение заключается именно в этом. Нужно собрать всю свою волю и поставить кавычки:

<... value='{{ variable }}'>

Среда разработки заботливо сообщит Вам, что теперь это просто строка, окрасив это символьное выражение соответствующим цветом. Тем не менее, именно в таком варианте все сработает как должно.

Собственно, вопрос.

"Рядовой Сидоров, разве ты не видишь, что твоему боевому товарищу за шиворот капает расплавленное железо?!". В смысле, чем объясняется такое - назвал бы его нетривиальным - поведение и в какой документации об этом почитать?

Спасибо)

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