Conflicting template tags

I want to use AngularJS with Django however they both use {{ }} as their template tags. Is there an easy way to change one of the two to use some other custom templating tag?


For Angular 1.0 you should use the $interpolateProvider apis to configure the interpolation symbols: http://docs.angularjs.org/api/ng.$interpolateProvider.

Something like this should do the trick:

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

Keep in mind two things:

  • mixing server-side and client-side templates is rarely a good idea and should be used with caution. The main issues are: maintainability (hard to read) and security (double interpolation could expose a new security vector - eg while escaping of serverside and clientside templating by themselves might be secure, their combination might not be).
  • if you start using third-party directives (components) that use {{ }} in their templates then your configuration will break them. (fix pending)
  • While there is nothing we can do about the first issue, except for warning people, we do need to address the second issue.


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

    If you did separate sections of page properly then you can easily use angularjs tags in "raw" tag scope.

    In jinja2

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

    In Django template (above 1.5)

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

    上一篇: CSRF令牌丢失或不正确,即使我有{%csrf

    下一篇: 冲突的模板标签