Django rest framework ';类型';对象不适用于Django Rest框架和Django oauth2工具包
我试图在视图中创建自定义身份验证类时为登录用户创建新的访问令牌 序列化程序.pyDjango rest framework ';类型';对象不适用于Django Rest框架和Django oauth2工具包,django-rest-framework,django-oauth,Django Rest Framework,Django Oauth,我试图在视图中创建自定义身份验证类时为登录用户创建新的访问令牌 序列化程序.py class UserCreateSerializer(ModelSerializer): def create(self, validated_data): user = User.objects.create_user(validated_data['username'], validated_data['email'],
class UserCreateSerializer(ModelSerializer):
def create(self, validated_data):
user = User.objects.create_user(validated_data['username'],
validated_data['email'],
validated_data['password'])
return user
class Meta:
model = User
fields = ('username', 'email' ,'password')
views.py
class User_Create_view(CreateAPIView):
serializer_class = UserCreateSerializer
queryset = User.objects.all()
permission_classes = [AllowAny]
authentication_classes = Has_Access_Token
def create(self, request):
serializers =self.serializer_class(data=request.data)
if serializers.is_valid():
# pdb.set_trace()
serializers.save()
# Has_Access_Token.access_token(Has_Access_Token())
return Response(serializers.data)
return Response(status=status.HTTP_202_ACCEPTED))
权限.py
class Has_Access_Token(BaseAuthentication):
def access_token(self):
app = Application.objects.get(name="testing")
tok = generate_token()
pdb.set_trace()
acce_token=AccessToken.objects.get_or_create(
user=User.objects.all().last(),
application=app,
expires=datetime.datetime.now() + datetime.timedelta(days=365),
token=tok)
return acce_token
@method_decorator(access_token)
def authenticate(self):
return request
如果我用装饰器
更新包装中第33行的文件“/usr/lib/python2.7/functools.py”
setattr(包装,attr,getattr(包装,attr))
AttributeError:“tuple”对象没有属性“模块”
如果我没有使用装饰器
文件“/home/allwin/Desktop/response/env/local/lib/python2.7/site packages/rest\u framework/views.py”,第262行,在get\u authenticators中
为self.authentication\u类中的身份验证返回[auth()]
TypeError:“type”对象不可编辑
我面临的问题是,当我在序列化程序之后隐式使用Has_Access_Token函数时。save()访问令牌是在admin中针对用户生成的,但这不是有效的方法,因此我需要在视图中重写自定义身份验证_类
请有人提出一些解决这个问题的方法,或者让我知道上面代码中的decorator更正
提前感谢。在设置
REST\u框架时。在settings.py
文件中,默认的\u身份验证\u类必须如下所示:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [ # need to be list not tuple
'CustomAuthentication',
],
}