在Angular模块中获取Django request.user

时间:2016-04-20 16:25:14

标签: angularjs django http request

我是Angular的新手,并试图弄清楚最好的方法是如何做到这一点。在我的Django视图中,我对用户进行身份验证,将该用户存储在request.user中。有没有办法在Angular模块中检索该request.user。我可以通过Angular的$ http服务检索它吗?环顾四周,但找不到解决方案...但是,我想我会尝试好堆栈溢出。

function bindPusher() {
            var defer = $q.defer();

        var channelName = 'private-account-' + Session.account.id;
        var channel = $pusher.client.subscribe(channelName);

        channel.bind('pusher:subscription_succeeded', function (data) {
            $log.debug('Pusher subscribed: ' + channel.name);
            PushListener.bindAndListen(channel);
            defer.resolve(data);
        });
        channel.bind('pusher:subscription_error', function (status) {
            if (status === 403) {
                var msg = 'Pusher channel not authorized.';
                $log.warn(msg);
                defer.reject(msg);
            }
        });

        return defer.promise;
    }

1 个答案:

答案 0 :(得分:2)

Angular在浏览器中运行,Django在服务器上运行。使用JSON字符串将Django的request.user数据发送到浏览器,Angular可以将JSON字符串解包到Javascript对象中。

所以,你是对的,$http.get('/path/my-user.json')可以阅读request.user的数据。

$http.get('/path/my-user.json').then(function (response) {
  $scope.user = response.data.user;
}, function (reject) {
  // error
});

在Django视图中,您将数据作为JSON编码字符串发送。

def my_view(request):
    data = {'username': request.user.username,
            'is_staff': request.user.is_staff}
    return JsonResponse(data)

但是,这些是Django和Angular,所以一旦你理解了基础知识,有很多东西可以实现自动化。即Django RestframeworkAngular Resource Service