以下是我的观点,
@api_view(['GET','POST'])
def login(request):
if request.method == 'GET':
posts = Posts.objects.all()
serializer = PostSerializer(posts, many=True)
return Response(serializer.data)
elif request.method == 'POST':
usr = request.data.get('username')
print(request.data)
pwd = request.data.get('password')
try:
user = Users.objects.get(username=usr)
if user.password == pwd:
return Response(UserSerializer(user).data)
else:
return Response({})
except Users.DoesNotExist:
return Response({})
这是我在angularjs控制器中的调用
$http.post("api/v1/login/",{"username":$scope.username,"password":$scope.password})
.then(
function(response){
console.log('r',response.data)
},
function(response){
console.log('e',response)
}
);
我在视图中得到一个空对象。我还添加了
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
在某些博客中建议的角度配置中。request.data
仍然是空的。我在哪里做错了请指导我。提前谢谢。
我已更新此帖子,因为有一些不相关的代码。问题应该在这两个代码块中。请帮助。获取ajax请求正在运行。只有在帖子中,我才能得到任何数据。
答案 0 :(得分:0)
from rest_framework.decorators import api_view, parser_classes
from rest_framework.parsers import FormParser, MultiPartParser
@api_view(['GET','POST'])
@parser_classes((FormParser, MultiPartParser))
def login(request):
...
答案 1 :(得分:0)
安装ngCookies然后添加以下代码:
.run(['$rootScope', '$log', '$http', '$cookies',
function ($rootScope, $log, $http, $cookies) {
$http.defaults.headers.common['X-CSRFToken'] = $cookies['csrftoken'];
}]);
清理浏览器并重试。