使用angular和django rest框架刷新user.is_authenticated

时间:2016-01-01 15:57:15

标签: angularjs django django-rest-framework

我在后端使用django rest框架,在前端使用angularjs。问题是登录,以角度我做:

function ($scope, $http, User) {
        $scope.login = function (user) {
            $http.post('/login/', user)
                .then(function (response, status) {     // success callback
                    console.log("success");
                    console.log(response);
                }, function(response) {     // error callback
                    console.log("error");
                    console.log(response);
                })
        }
    }

然后在我的views.py中:

def login_view(request):
    user = authenticate(username=request.data['username'], password=request.data['password'])
    if user is not None:
        login(request, user)
        return HttpResponse(status=200)

    return HttpResponse(status=400)

但是在我的主页模板中,我使用的是唯一的django模板,其余的是纯HTML,因为我使用带状态视图的ui-router,所以{%if user.is_authenticated%}不会更新我必须手动刷新页面。是否有任何解决方案来制作' if'在没有刷新所有页面的情况下触发模板中的语句,或者在我的网站上建立登录系统的更好的解决方案?

谢谢。

1 个答案:

答案 0 :(得分:3)

你不应该在AngularJS中使用Django的模板脚本。 AngularJS是SPA。 Django的模板脚本与SPA不兼容。

您只需要在javascript中创建客户端逻辑。 这可以通过创建服务器端点来完成,如果给定用户通过身份验证,则返回true。