我在后端使用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'在没有刷新所有页面的情况下触发模板中的语句,或者在我的网站上建立登录系统的更好的解决方案?
谢谢。
答案 0 :(得分:3)
你不应该在AngularJS中使用Django的模板脚本。 AngularJS是SPA。 Django的模板脚本与SPA不兼容。
您只需要在javascript中创建客户端逻辑。 这可以通过创建服务器端点来完成,如果给定用户通过身份验证,则返回true。