3

ログインと登録のために私のdjangoプロジェクトにDjango-rest-auth(https://github.com/Tivix/django-rest-auth)を使用しています。次のように私は、デフォルトの登録フォームを参照してください。Django rest registration

enter image description here

現在、私は、電子メールの代わりに、ユーザー名を持つ新しいユーザーを登録することができるというのです。 (ID、パスワード、last_login、IS_SUPERUSER、ユーザ名、FIRST_NAME、LAST_NAME、電子メール、is_staff、is_active、date_joined)

私のsettings.py:

INSTALLED_APPS = (
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.sites', 
'rest_framework', 
#Rest-auth 
'rest_framework.authtoken', 
'rest_auth', 
#Rest-auth registration 
'allauth', 
'allauth.account', 
'rest_auth.registration', 
#Following is added to allow cross domain requests i.e. for serving requests those are coming from frontend app 
'corsheaders', 
'flights', 
) 
私のMySQLデータベースのデフォルトのAUTH_USERテーブルには、次のカラムがあります

登録フォームを変更して上記のフィールドに姓と名を付けたいので、新しいユーザーを登録すると、その2つの列にはfirst_name & last_nameも入力されます。現在、登録やカスタムユーザモデルの追加ビューはありません.Django-rest-authが提供するAPIエンドポイントを使用しています。

どうすればこの問題を解決できますか?

答えて

1

フィールドを追加する場合は、シリアライザに追加する必要があります。 serializers.pyRegisterSerializerで見つけ、そこFIRST_NAMEを追加し、

first_name = serializers.CharField(required=True, write_only=True) 
last_name = serializers.CharField(required=True, write_only=True) 

をLAST_NAME、このシリアライザ方法にそれらを追加します。

def get_cleaned_data(self): 
    return { 
     'first_name': self.validated_data.get('first_name', ''), 
     'last_name': self.validated_data.get('last_name', ''), 
     'username': self.validated_data.get('username', ''), 
     'password1': self.validated_data.get('password1', ''), 
     'email': self.validated_data.get('email', '') 
    } 

・ホープこのヘルプます。

+0

を、私は私のserializers.pyのあらゆるRegisterSerializerを持っていません。私は自分のプロジェクトに関連するシリアライザしか持っていません。 – Nitish

6

あなたは

from rest_auth.registration.serializers import RegisterSerializer 

class RegistrationSerializer(RegisterSerializer): 
    first_name = serializers.CharField(required=True) 
    last_name = serializers.CharField(required=True) 

    def get_cleaned_data(self): 
     return { 
      'first_name': self.validated_data.get('first_name', ''), 
      'last_name': self.validated_data.get('last_name', ''), 
      'username': self.validated_data.get('username', ''), 
      'password1': self.validated_data.get('password1', ''), 
      'email': self.validated_data.get('email', '') 
     } 

そして、あなたのsettings.pyに残り-AUTHのRegisterSerializerを拡張することによって、これを追加することを達成することができます:

REST_AUTH_REGISTER_SERIALIZERS = { 
    'REGISTER_SERIALIZER': 'path.to.your.RegistrationSerializer' 
} 
+0

これは私に多くのグーグルを救った – niklas

関連する問題