Django不能很好地使用简单的angularjs,不知道为什么

时间:2014-07-03 07:52:02

标签: javascript python django angularjs

所以这是我简单的角度应用程序。当我通过浏览器自己运行html文件时,会显示变量名称" nothing"。然而,当我通过创建一个只调用模板的虚拟视图(见下面的视图)将它集成到django中时,不会显示变量名称。唯一的区别是当使用django我通过{%static%}加载JS文件。除了django版本没有输出变量名之外,html输出对两者都完全相同。我把这个问题简化为最简单的形式,似乎无法理解这里发生了什么。

JS文件在django版本中100%加载。 Chrome控制台显示没有错误。我最初开发了一个简单的角度应用程序,以便与我的django应用程序集成,但如果这个简单的问题妨碍了我,我就无能为力。

views.py

def home_tester(request):
    return render(request, 'angular/base.html')

HTML

<!DOCTYPE html>
<html ng-app="ZeTasty">
<head>
    <meta charset="UTF-8">
    <title>Learning AngularJS</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.js" type="text/javascript"></script>
    <script src="app.js" type="text/javascript"></script>
    <script src="gridfilter.js" type="text/javascript"></script>
</head>

<body>
    <div id="content" ng-controller="GridFilter">
        {{name}}
    </div>
</body>
</html>

app.js

var app = angular.module('ZeTasty',[]);

gridfilter.js

app.controller("GridFilter", function($scope){
    $scope.name = 'nothing';
});

1 个答案:

答案 0 :(得分:3)

您需要添加{%verbatim%}{%endverbatim%}代码

django和angular使用相同的{{}}标记。 通过用{%verbatim%}暗示django,他将忽略{{}}。这将允许您将角度与django模板结合起来

示例:

<!DOCTYPE html>
<html ng-app="ZeTasty">
<head>
    <meta charset="UTF-8">
    <title>Learning AngularJS</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.js" type="text/javascript"></script>
    <script src="app.js" type="text/javascript"></script>
    <script src="gridfilter.js" type="text/javascript"></script>
</head>

<body>


<!-- 'verbatim' is required in order to disable Django's template engine
so we could use Angular's syntax -->

{%verbatim%}
    <div id="content" ng-controller="GridFilter">
        {{name}}
    </div>

{%endverbatim%}

</body>
</html>