Python 在django rest auth中使用自定义UserDetailsSerializer时的AttributeError

Python 在django rest auth中使用自定义UserDetailsSerializer时的AttributeError,python,django,rest,django-rest-framework,django-rest-auth,Python,Django,Rest,Django Rest Framework,Django Rest Auth,我们已经创建了一个自定义的UserDetailsSerializer,但是当尝试运行应用程序时,我们得到了错误: AttributeError:module'path.to.serializers'没有属性'MPUserDetailsSerializer' 完全错误是 django设置中的REST\u AUTH\u SERIALIZER和USER\u DETAILS\u SERIALIZER设置为: REST_AUTH_SERIALIZERS = { 'LOGIN_SERIALIZER'

我们已经创建了一个自定义的
UserDetailsSerializer
,但是当尝试运行应用程序时,我们得到了错误:

AttributeError:module'path.to.serializers'没有属性'MPUserDetailsSerializer'

完全错误是

django设置中的
REST\u AUTH\u SERIALIZER
USER\u DETAILS\u SERIALIZER
设置为:

REST_AUTH_SERIALIZERS = {
    'LOGIN_SERIALIZER': 'questions.serializers.LoginSerializer',
    'JWT_SERIALIZER' : 'questions.serializers.JWTSerializer',
    'USER_DETAILS_SERIALIZER' : 'questions.serializers.MPUserDetailsSerializer',
}
自定义序列化程序是:

from rest_auth import serializers as auth_serializers

class MPUserDetailsSerializer(auth_serializers.UserDetailsSerializer):
"""
User model w/o password
"""
class Meta:
    model = User
    fields = ('pk', 'username', 'email', 'name')
    read_only_fields = ('username', )

def validate_email(self, email):
    email = get_adapter().clean_email(email)
    if allauth_settings.UNIQUE_EMAIL:
        if email and email_address_exists(email):
            raise serializers.ValidationError(
                _("A user is already registered with this e-mail address."))
    return email
我们所做的解决方法是从本地
virtualenv
文件中删除以下行,该文件位于
/lib/python3.5/site packages/rest auth/serializers.py

# Required to allow using custom USER_DETAILS_SERIALIZER  in
# JWTSerializer. Defining it here to avoid circular imports
rest_auth_serializers = getattr(settings, 'REST_AUTH_SERIALIZERS', {})
JWTUserDetailsSerializer = import_callable(
  rest_auth_serializers.get('USER_DETAILS_SERIALIZER', UserDetailsSerializer)
)
并在同一文件中将
JWTUserDetailsSerializer
替换为
UserDetailsSerializer

我知道更改第三方代码不是一个好的做法,特别删除要求允许自定义
用户详细信息\u序列化程序的行也没有任何意义,但我们不知道该怎么做才能使其工作,我们是否遗漏了什么?也许是配置文件


我们正在使用django v1.10.1、djangorestframework v3.4.7和django rest auth v0.9.0

这是django rest auth在最新版本-0.9.1中修复的一个问题


要了解更多信息,请参见最新版本0.9.1中修复的django rest auth的问题


要了解更多信息,.

我认为如果您包括
REST\u AUTH\u序列化程序
配置和自定义序列化程序定义的精简版本,那么回答您的问题会更容易。如果您将您的定制服务称为除
UserDetailsSerializer
之外的其他服务,那么也就不会那么混乱了。谢谢@GrishaLevit,我刚刚用更多信息更新了这个问题,并更改了序列化程序的名称。我认为,如果您包括
REST\u AUTH\u序列化程序
配置和自定义序列化程序定义的精简版本,那么回答您的问题会更容易。如果您将自定义序列化程序称为除
UserDetailsSerializer
之外的其他名称,那么也就不会那么令人困惑了。谢谢@GrishaLevit,我刚刚更新了这个问题,提供了有关它的更多信息,并更改了序列化程序的名称