Javascript Django和AngularJS
我已经下载了,并设法安装和创建了一个应用程序,其中包含一个示例页面,可以从远程数据库读取值 我现在正试图将其配置为使用AngularJS来显示页面,基于它们的属性,但没有效果。在我的/static/javascripts/thinkster.js上,我添加了新的js模块,并声明它没有依赖项Javascript Django和AngularJS,javascript,python,angularjs,django,Javascript,Python,Angularjs,Django,我已经下载了,并设法安装和创建了一个应用程序,其中包含一个示例页面,可以从远程数据库读取值 我现在正试图将其配置为使用AngularJS来显示页面,基于它们的属性,但没有效果。在我的/static/javascripts/thinkster.js上,我添加了新的js模块,并声明它没有依赖项 (function () { 'use strict'; angular.module('thinkster', ['thinkster.controllerModule']); angu
(function () {
'use strict';
angular.module('thinkster', ['thinkster.controllerModule']);
angular.module('thinkster.controllerModule', []);
})();
我在/static/javascripts/controllerModule.js中创建了该模块,并声明了一个关联的控制器来定义变量“names”(作为一个简单的测试)
作为一个测试HTML,我已经将index.HTML代码复制到/templates/myPage.HTML并编辑了几行代码,以便页面使用我的控制器,列出“names”数组并包含JS模块
<!DOCTYPE html>
<html ng-app="thinkster">
<head>
<title>Da Page</title>
<base href="/" />
{% include 'stylesheets.html' %}
</head>
<body>
<div class="row" ng-controller="myController">
<div class="col-md-4 col-md-offset-4">
<ul>
<li ng-repeat="x in names">
{{ x.name }} , {{ x.country }}
</li>
</ul>
</div>
</div>
{% include 'javascripts.html' %}
</body>
</html>
我的“url.py”有一个“myPage”模式,它重定向到“views.py”中的函数
urlpatterns = patterns(
'',
url(r'myPage', views.myPage, name='myPage'),
url('^.*$', include('myApp.urls')),
)
当我加载页面时,列表是空的。没有名字出现。我甚至不知道如何调试它,只是看起来好像有些配置错误。有什么提示吗?在Django模板中包含角度语法。但是,它们都使用相同的
{{}
格式,因此,由于Django首先解析模板,因此在Angular有机会看到这些变量之前,它会对这些变量进行求值(不求值)
通常,您应该拆分Django和Angular模板;从Django的角度来看,Angular模板实际上是静态文件,应该通过静态文件服务器加载
既然你只是在学习角度,那么现在这样做是公平的。为了解决眼前的问题,您可以使用Django
{%verbatim%}…{%endverbatim%}
块包装角度代码,这样Django就不会对其求值。您还可以使用$interpolateProvider
并将{}符号更改为{%}或/。但要确保舒尔在模块初始化之前就完成了这项工作
customInterpolationApp.config(function($interpolateProvider) {
$interpolateProvider.startSymbol('//');
$interpolateProvider.endSymbol('//');
});
$EProvider
def myPage(request):
return render(request, 'myPage.html')
urlpatterns = patterns(
'',
url(r'myPage', views.myPage, name='myPage'),
url('^.*$', include('myApp.urls')),
)
customInterpolationApp.config(function($interpolateProvider) {
$interpolateProvider.startSymbol('//');
$interpolateProvider.endSymbol('//');
});