** Улучшения и предложения приветствуются.

я есть проект Django с CustomUserModel. Я расширил стандартный вид регистрации Django с помощью моего CustomRegisterView, а также создал CustomLoginView, расширив LoginView. Все работает отлично, данные тоже сохраняются с настраиваемыми полями, и при входе и регистрации я получаю «ключ» в ответ, но я хочу настроить ответ обоих API с помощью дополнительных полей, таких как значение первичного ключа и result_flag, который будет либо 0, либо 1.

Мой класс CustomRegisterSerializer определяется как

class CustomRegisterSerializer(RegisterSerializer):
    email = serializers.EmailField()
    password1 = serializers.CharField(write_only=True)
    name = serializers.CharField()
    phone_no = serializers.IntegerField()
    user_android_id = serializers.CharField()
    user_fcm_token = serializers.CharField(required=True)
    user_social_flag = serializers.IntegerField()
    user_fb_id = serializers.CharField(required=True)
    user_android_app_version = serializers.CharField()

    class Meta:
        model = User
        fields = ('email', 'name', 'phone_no', 'user_android_id', 'user_fcm_token',
                  'user_social_flag', 'user_fb_id', 'user_android_app_version')

    def get_cleaned_data(self):
        super(CustomRegisterSerializer, self).get_cleaned_data()

        return {
            'password1': self.validated_data.get('password1', ''),
            'email': self.validated_data.get('email', ''),
            'phone_no': self.validated_data.get('phone_no'),
            'name': self.validated_data.get('name'),
            'user_android_id': self.validated_data.get('user_android_id'),
            'user_fcm_token': self.validated_data.get('user_fcm_token'),
            'user_social_flag': self.validated_data.get('user_social_flag'),
            'user_fb_id': self.validated_data.get('user_fb_id'),
            'user_android_app_version': self.validated_data.get('user_android_app_version'),

        }

    def save(self, request):
        user = super(CustomRegisterSerializer, self).save(request)
        print(user.pk)

       return user

Файл просмотров:

from rest_auth.registration.views import RegisterView, LoginView
from app.models import User


class CustomRegisterView(RegisterView):
    queryset = User.objects.all()

class CustomLoginView(LoginView):
    queryset = User.objects.all()

urls.py: (в каталоге приложений)

from django.urls import re_path
from . import views


app_name = 'app'
urlpatterns = [

    re_path(r'^registration/

Update1:

Могу ли я изменить это представление LoginApi с CustomUserModel и использовать метод authenticate () для аутентификации электронной почты и пароля.

class AuthUserLogin(CsrfExemptMixin, View):
    def post(self, request):
        password = "" if request.POST['user_password'] == "" else request.POST['user_password']
        email = "" if request.POST['user_email'] == "" else request.POST['user_email']
        android_id = "" if request.POST['user_android_id'] == "" else request.POST['user_android_id']
        fcm_token = "" if request.POST['user_fcm_token'] == "" else request.POST['user_fcm_token']
        social_flag = "" if request.POST['user_social_flag'] == "" else request.POST['user_social_flag']
        u_name = "" if request.POST['user_name'] == "" else request.POST['user_name']
        fb_id = "" if request.POST['user_fb_id'] == "" else request.POST['user_fb_id']

        hash_pwd = pbkdf2_sha256.using(rounds=8000, salt=str.encode(SALT_KEY)).hash(password)

        result_response = ""
        if social_flag == "0":
            email_check = UserAuth.objects.filter(email_id=email)
            if email_check.exists():
                authenticate_user = UserAuth.objects.filter(email_id=email,password=hash_pwd).values('user_id')

                if authenticate_user.exists():
                    u_id = authenticate_user[0]['user_id']
                    num_rows = UserAuth.objects.filter(user_id=u_id).update(user_android_id=android_id,
                                                                 user_fcm_token= fcm_token,
                                                                 user_social_flag=social_flag,
                                                                user_fb_id=fb_id)
                    if num_rows > 0:
                        result_response = {
                            'result': 1,
                            'user_id' : u_id,
                        }
                else:
                    result_response = {
                        'result': 0,
                        'msg' : "You have entered an incorrect password for the e-mail id: " + str(email)
                    }

            else:
                print("email not exists")
                result_response = {
                    'result' : 0,
                    'msg' :"User with this e-mail address is not registered with nifty trader"
                }

        elif social_flag == "1" or email != "":
            ##------- check email already exists
            check_email = UserAuth.objects.filter(email_id=email).values('user_id')
            if check_email.exists():
                print("email exists social user")
                #print(check_email[0]['user_id'])
                update_record = UserAuth.objects.filter(user_id=check_email[0]['user_id'])\
                                            .update(user_android_id=android_id,
                                                    user_fcm_token=fcm_token,
                                                    user_social_flag=social_flag,
                                                    password=None,
                                                    user_name=u_name, user_fb_id=fb_id)

                if update_record == 0 or update_record == "" or update_record is None :
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': check_email[0]['user_id'],
                    }

            else:
                print("email does not exists")
                save_user = UserAuth(user_android_id=android_id,email_id=email,
                                     user_fcm_token=fcm_token,
                                     user_social_flag=social_flag,
                                     password="", created_at=date.today(), user_name=u_name,
                                     user_fb_id=fb_id)
                save_user.save()
                if save_user.pk == "" or save_user.pk is None:
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': save_user.pk,
                    }
        elif social_flag == "2":
            print("fb login")
            check_fbid = UserAuth.objects.filter(user_fb_id=fb_id).values('user_id')
            if check_fbid.exists():
                print("fb id exists ")
                update_record = UserAuth.objects.filter(user_id=check_fbid[0]['user_id'])\
                                            .update(user_android_id=android_id,
                                                    user_fcm_token=fcm_token,
                                                    user_social_flag=social_flag,
                                                    password=None,
                                                    user_name=u_name,
                                                    email_id=email)

                if update_record == 0 or update_record == "" or update_record is None :
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': check_fbid[0]['user_id'],
                    }
            else:
                save_fbuser = UserAuth(user_android_id=android_id, email_id=email,
                                     user_fcm_token=fcm_token,
                                     user_social_flag=social_flag,
                                     password="", created_at=date.today(), user_name=u_name,
                                     user_fb_id=fb_id)
                save_fbuser.save()
                if save_fbuser.pk == "" or save_fbuser.pk is None:
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': save_fbuser.pk,
                    }



        return JsonResponse(result_response, safe=False)

user_auth = csrf_exempt(AuthUserLogin.as_view())

Могу ли я получить индивидуальный ответ?

, views.CustomRegisterView.as_view()), re_path(r'^user-login/

Update1:

Могу ли я изменить это представление LoginApi с CustomUserModel и использовать метод authenticate () для аутентификации электронной почты и пароля.

class AuthUserLogin(CsrfExemptMixin, View):
    def post(self, request):
        password = "" if request.POST['user_password'] == "" else request.POST['user_password']
        email = "" if request.POST['user_email'] == "" else request.POST['user_email']
        android_id = "" if request.POST['user_android_id'] == "" else request.POST['user_android_id']
        fcm_token = "" if request.POST['user_fcm_token'] == "" else request.POST['user_fcm_token']
        social_flag = "" if request.POST['user_social_flag'] == "" else request.POST['user_social_flag']
        u_name = "" if request.POST['user_name'] == "" else request.POST['user_name']
        fb_id = "" if request.POST['user_fb_id'] == "" else request.POST['user_fb_id']

        hash_pwd = pbkdf2_sha256.using(rounds=8000, salt=str.encode(SALT_KEY)).hash(password)

        result_response = ""
        if social_flag == "0":
            email_check = UserAuth.objects.filter(email_id=email)
            if email_check.exists():
                authenticate_user = UserAuth.objects.filter(email_id=email,password=hash_pwd).values('user_id')

                if authenticate_user.exists():
                    u_id = authenticate_user[0]['user_id']
                    num_rows = UserAuth.objects.filter(user_id=u_id).update(user_android_id=android_id,
                                                                 user_fcm_token= fcm_token,
                                                                 user_social_flag=social_flag,
                                                                user_fb_id=fb_id)
                    if num_rows > 0:
                        result_response = {
                            'result': 1,
                            'user_id' : u_id,
                        }
                else:
                    result_response = {
                        'result': 0,
                        'msg' : "You have entered an incorrect password for the e-mail id: " + str(email)
                    }

            else:
                print("email not exists")
                result_response = {
                    'result' : 0,
                    'msg' :"User with this e-mail address is not registered with nifty trader"
                }

        elif social_flag == "1" or email != "":
            ##------- check email already exists
            check_email = UserAuth.objects.filter(email_id=email).values('user_id')
            if check_email.exists():
                print("email exists social user")
                #print(check_email[0]['user_id'])
                update_record = UserAuth.objects.filter(user_id=check_email[0]['user_id'])\
                                            .update(user_android_id=android_id,
                                                    user_fcm_token=fcm_token,
                                                    user_social_flag=social_flag,
                                                    password=None,
                                                    user_name=u_name, user_fb_id=fb_id)

                if update_record == 0 or update_record == "" or update_record is None :
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': check_email[0]['user_id'],
                    }

            else:
                print("email does not exists")
                save_user = UserAuth(user_android_id=android_id,email_id=email,
                                     user_fcm_token=fcm_token,
                                     user_social_flag=social_flag,
                                     password="", created_at=date.today(), user_name=u_name,
                                     user_fb_id=fb_id)
                save_user.save()
                if save_user.pk == "" or save_user.pk is None:
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': save_user.pk,
                    }
        elif social_flag == "2":
            print("fb login")
            check_fbid = UserAuth.objects.filter(user_fb_id=fb_id).values('user_id')
            if check_fbid.exists():
                print("fb id exists ")
                update_record = UserAuth.objects.filter(user_id=check_fbid[0]['user_id'])\
                                            .update(user_android_id=android_id,
                                                    user_fcm_token=fcm_token,
                                                    user_social_flag=social_flag,
                                                    password=None,
                                                    user_name=u_name,
                                                    email_id=email)

                if update_record == 0 or update_record == "" or update_record is None :
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': check_fbid[0]['user_id'],
                    }
            else:
                save_fbuser = UserAuth(user_android_id=android_id, email_id=email,
                                     user_fcm_token=fcm_token,
                                     user_social_flag=social_flag,
                                     password="", created_at=date.today(), user_name=u_name,
                                     user_fb_id=fb_id)
                save_fbuser.save()
                if save_fbuser.pk == "" or save_fbuser.pk is None:
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': save_fbuser.pk,
                    }



        return JsonResponse(result_response, safe=False)

user_auth = csrf_exempt(AuthUserLogin.as_view())

Могу ли я получить индивидуальный ответ?

, views.CustomLoginView.as_view()) ]

Update1:

Могу ли я изменить это представление LoginApi с CustomUserModel и использовать метод authenticate () для аутентификации электронной почты и пароля.

class AuthUserLogin(CsrfExemptMixin, View):
    def post(self, request):
        password = "" if request.POST['user_password'] == "" else request.POST['user_password']
        email = "" if request.POST['user_email'] == "" else request.POST['user_email']
        android_id = "" if request.POST['user_android_id'] == "" else request.POST['user_android_id']
        fcm_token = "" if request.POST['user_fcm_token'] == "" else request.POST['user_fcm_token']
        social_flag = "" if request.POST['user_social_flag'] == "" else request.POST['user_social_flag']
        u_name = "" if request.POST['user_name'] == "" else request.POST['user_name']
        fb_id = "" if request.POST['user_fb_id'] == "" else request.POST['user_fb_id']

        hash_pwd = pbkdf2_sha256.using(rounds=8000, salt=str.encode(SALT_KEY)).hash(password)

        result_response = ""
        if social_flag == "0":
            email_check = UserAuth.objects.filter(email_id=email)
            if email_check.exists():
                authenticate_user = UserAuth.objects.filter(email_id=email,password=hash_pwd).values('user_id')

                if authenticate_user.exists():
                    u_id = authenticate_user[0]['user_id']
                    num_rows = UserAuth.objects.filter(user_id=u_id).update(user_android_id=android_id,
                                                                 user_fcm_token= fcm_token,
                                                                 user_social_flag=social_flag,
                                                                user_fb_id=fb_id)
                    if num_rows > 0:
                        result_response = {
                            'result': 1,
                            'user_id' : u_id,
                        }
                else:
                    result_response = {
                        'result': 0,
                        'msg' : "You have entered an incorrect password for the e-mail id: " + str(email)
                    }

            else:
                print("email not exists")
                result_response = {
                    'result' : 0,
                    'msg' :"User with this e-mail address is not registered with nifty trader"
                }

        elif social_flag == "1" or email != "":
            ##------- check email already exists
            check_email = UserAuth.objects.filter(email_id=email).values('user_id')
            if check_email.exists():
                print("email exists social user")
                #print(check_email[0]['user_id'])
                update_record = UserAuth.objects.filter(user_id=check_email[0]['user_id'])\
                                            .update(user_android_id=android_id,
                                                    user_fcm_token=fcm_token,
                                                    user_social_flag=social_flag,
                                                    password=None,
                                                    user_name=u_name, user_fb_id=fb_id)

                if update_record == 0 or update_record == "" or update_record is None :
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': check_email[0]['user_id'],
                    }

            else:
                print("email does not exists")
                save_user = UserAuth(user_android_id=android_id,email_id=email,
                                     user_fcm_token=fcm_token,
                                     user_social_flag=social_flag,
                                     password="", created_at=date.today(), user_name=u_name,
                                     user_fb_id=fb_id)
                save_user.save()
                if save_user.pk == "" or save_user.pk is None:
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': save_user.pk,
                    }
        elif social_flag == "2":
            print("fb login")
            check_fbid = UserAuth.objects.filter(user_fb_id=fb_id).values('user_id')
            if check_fbid.exists():
                print("fb id exists ")
                update_record = UserAuth.objects.filter(user_id=check_fbid[0]['user_id'])\
                                            .update(user_android_id=android_id,
                                                    user_fcm_token=fcm_token,
                                                    user_social_flag=social_flag,
                                                    password=None,
                                                    user_name=u_name,
                                                    email_id=email)

                if update_record == 0 or update_record == "" or update_record is None :
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': check_fbid[0]['user_id'],
                    }
            else:
                save_fbuser = UserAuth(user_android_id=android_id, email_id=email,
                                     user_fcm_token=fcm_token,
                                     user_social_flag=social_flag,
                                     password="", created_at=date.today(), user_name=u_name,
                                     user_fb_id=fb_id)
                save_fbuser.save()
                if save_fbuser.pk == "" or save_fbuser.pk is None:
                    result_response = {'result': 0}
                else:
                    result_response = {
                        'result': 1,
                        'user_id': save_fbuser.pk,
                    }



        return JsonResponse(result_response, safe=False)

user_auth = csrf_exempt(AuthUserLogin.as_view())

Могу ли я получить индивидуальный ответ?

Ответы на вопрос(2)

Ваш ответ на вопрос