Django/AngularJS:如何从AngularJS脚本访问Python上下文项



你好,SO!我是一个初学者,正在尝试Django项目,同时使用AngularJS作为我的前端Firebase聊天系统。这是我之前问过的关于这个项目的一个问题:Firebase/Angular:消息不显示在HTML中,但包含消息对象

我知道在使用django/python时直接在html上使用json变量是不明智的,但碰巧我的firebase聊天模块正在使用angularJS(我不知道如何在django..中编写这个聊天函数),我的angularJS代码需要从View.py访问我的django的上下文查询集。

有什么办法我可以:

  1. 像推送上下文一样,将json项推送到我的HTML/Template中从Views.py将信息输入到我的HTML/Template中,并在我的AngularJS脚本
  2. 从Views.py的Context访问我的Django/Python的数据集

这是我为firebase编写的AngularJS代码:

var app = angular.module('chatApp', ['firebase']);
app.controller('ChatController', function($scope, $firebaseArray) {
//I want to populate the crisis and sender variables  with something from my context 
//from Views.py.. Inside planList
var crisis = "Crisis1"; 
var sender = "Sender1";
//Query
var ref = firebase.database().ref().child(crisis).child('CMO-PMO');
$scope.messages = $firebaseArray(ref);
$scope.send = function() {
$scope.messages.$add({
sender: sender,
message: $scope.messageText,
date: Date.now()
})
}
})

这是我的Views.py代码:

def home(request):
template = loader.get_template('app/home.html')
planList = Plan.objects.filter(plan_crisisID__crisis_status='Ongoing')
context = {        
'planList': planList
}
return HttpResponse(template.render(context, request))

AngularJS代码中需要的两个变量(危机和发送者)都来自planList上下文。

有什么办法让我做到这一点吗?请给我一些帮助。。非常感谢,我非常感谢:)如果需要,我很乐意提供任何额外的信息,也会及时回复!

我认为最好使用API。使用DRF可以很容易地创建API。例如:

# Serializer
class SomeSerializer(serializers.ModelSerializer):
class Meta:
model = Plan
fields = ('model_fields',)
# Views:
from rest_framework import generics

Class SomeView(generics.ListView):
queryset = Plan.objects.all()
serializer_class = SomeSerializer

# urls
url(r'^plans$', SomeView.as_view()),

在Angular JS中,如果您使用Angular资源,您可以通过以下方式简单地获取数据:

res = $resource('/plans')
res.query().$promise.then(function(data) {
console.log(data)},  // You get your data in here
function(error) {
console.log(error)}
)

最新更新