AngularJS with Django - 冲突的模板标签

我想将AngularJS与Django一起使用,但是它们都用作模板标签。有没有一种简单的方法可以将两者之一更改为使用其他自定义模板标记?{{ }}


答案 1

对于 Angular 1.0,您应该使用$interpolateProvider api 来配置插值符号:http://docs.angularjs.org/api/ng.$interpolateProvider

像这样的东西应该可以解决问题:

myModule.config(function($interpolateProvider) {
  $interpolateProvider.startSymbol('{[{');
  $interpolateProvider.endSymbol('}]}');
});

请记住两件事:

  • 混合使用服务器端和客户端模板很少是一个好主意,应谨慎使用。主要问题是:可维护性(难以阅读)和安全性(双重插值可能会暴露新的安全向量 - 例如,虽然服务器端和客户端模板本身的转义可能是安全的,但它们的组合可能不是)。
  • 如果您开始使用在其模板中使用的第三方指令(组件),那么您的配置将破坏它们。(修复待定{{ }})

虽然除了警告人们之外,我们对第一个问题无能为力,但我们确实需要解决第二个问题。


答案 2

你可以尝试逐字Django模板标签,并像这样使用它:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>

{% verbatim %}
<div ng-app="">
    <p>10 is {{ 5 + 5 }}</p>
</div>
{% endverbatim %}