繁体   English   中英

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

[英]Django/AngularJS: How do I access my Python Context Items from my AngularJS Script

美好的一天! 我是一个初学者,在将AngularJS用于前端Firebase聊天系统时尝试了Django项目。 这是我问过的关于此项目的先前问题: 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-resource ,则可以通过以下方式简单地获取数据:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM