冲突的模板标签

我想在Django中使用AngularJS,但他们都使用{{ }}作为模板标签。 有没有简单的方法来改变其中一个使用其他自定义模板标签?


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

像这样的应该做的诀窍:

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

请记住两件事:

  • 混合服务器端和客户端模板很少是一个好主意,应谨慎使用。 主要问题是:可维护性(难以阅读)和安全性(双重内插可能会暴露一个新的安全向量 - 例如,当逃脱服务器端和客户端模板本身可能是安全的,它们的组合可能不会)。
  • 如果您开始使用在其模板中使用{{ }}的第三方指令(组件),那么您的配置将会破坏它们。 (修复未决)
  • 虽然对于第一个问题我们无能为力,除了警告人,我们确实需要解决第二个问题。


    你可以尝试逐字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 %}

    如果您正确地分隔了页面的各个部分,那么您可以在“原始”标签范围内轻松使用angularjs标签。

    在jinja2

    {% raw %}
        // here you can write angularjs template tags.
    {% endraw %}
    

    在Django模板(1.5以上)

    {% verbatim %}    
        // here you can write angularjs template tags.
    {% endverbatim %}
    
    链接地址: http://www.djcxy.com/p/56515.html

    上一篇: Conflicting template tags

    下一篇: 'NoneType' object is not subscriptable in using django smart selects