AngularJS с Django - конфликтующие шаблоны тегов - PullRequest
299 голосов
/ 29 ноября 2011

Я хочу использовать AngularJS с Django, однако они оба используют {{ }} в качестве тегов шаблонов. Есть ли простой способ изменить один из двух, чтобы использовать какой-либо другой пользовательский шаблонный тег?

Ответы [ 13 ]

7 голосов
/ 29 ноября 2011

Вы можете указать Django выводить {{ и }}, а также другие зарезервированные строки шаблона, используя тег {% templatetag %}.

Например, использование {% templatetag openvariable %} приведет к выводу {{.

3 голосов
/ 30 июня 2013

Я бы остановился на решении, которое использует оба тега django {{}}, а также angularjs {{}} с дословным разделом или тегом шаблона.

Это просто потому, что вы можете изменить способ работы angularjs (как упоминалось) через $ interpolateProvider.startSymbol $ interpolateProvider.endSymbol, но если вы начнете использовать другие компоненты angularjs, такие как ui-bootstrap, вы обнаружите, что некоторые из шаблонов УЖЕ созданы со стандартными тегами angularjs {{}}.

Например, посмотрите на https://github.com/angular-ui/bootstrap/blob/master/template/dialog/message.html.

0 голосов
/ 21 февраля 2016

Если вы выполняете любую серверную интерполяцию, only правильный способ сделать это с <>

$interpolateProvider.startSymbol('<{').endSymbol('}>');

Все остальное - вектор XSS.1008 * Это потому, что любые угловые разделители, которые не экранированы Django, могут быть введены пользователем в интерполированную строку;если кто-то установит свое имя пользователя как "{{evil_code}}", Angular с радостью запустит его .Если вы используете символ , а Django не может , этого не произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...