如何使用django-rest-framework创建Login视图

时间:2014-09-20 12:35:42

标签: python django django-rest-framework

我有一个序列化程序和我的登录视图。

class LoginView(generics.RetrieveAPIView):
    serializer_class= LoginSerializer
    queryset=User.objects.all()

    error_messages = {
        'invalid': "Invalid username or password",
        'disabled': "Sorry, this account is suspended",
    }

    def _error_response(self, message_key):
        data = {
            'success': False,
            'message': self.error_messages[message_key],
            'user_id': None,
        }
    def post(self,request):
        email = request.POST.get('email')
        password = request.POST.get('password')
        user = authenticate(email=email, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)

                return Response(status=status.HTTP_100_OK)
            return self._error_response('disabled')
        return self._error_response('invalid')

和序列化器:

class LoginSerializer(serializers.ModelSerializer):
     class Meta:
         model=User
         fields=('email','password') 

我的网址:

(r'^login/$',LoginView.as_view())

当我运行代码时出现错误  在/ login /处配置不正确 预期视图使用名为“pk”的URL关键字参数调用LoginView。修复您的网址,或者在视图上正确设置.lookup_field属性。

我目前在视图中没有重定向。 我做错了什么?

1 个答案:

答案 0 :(得分:1)

根据需要pk的文档,您使用generic.RetrieveAPIView扩展RetrieveModelMixinGenericAPIView,或者您必须在班级中设置.lookup_field。< / p>

RetrieveAPIView用于getget表示检索数据并检索所需数据pk

使用其他类来处理POST