首页 > 解决方案 > 有什么方法可以改变注册的 Django-rest-auth 的视图吗?

问题描述

我已经使用 Django-rest-auth 创建了 rest API,在注册时,它正在返回

{
"detail": "Verification e-mail sent."
}

, 但是我需要添加一些状态,比如成功和消息,比如发送的电子邮件等。有没有办法覆盖 django-rest-auth 的注册视图?

class MyRegisterSerializer(RegisterSerializer):
  first_name = serializers.CharField()
  last_name = serializers.CharField()

   def get_cleaned_data(self):
    super(MyRegisterSerializer, self).get_cleaned_data()
    return {
        'username': self.validated_data.get('username', ''),
        'password1': self.validated_data.get('password1', ''),
        'email': self.validated_data.get('email', ''),
        'first_name': self.validated_data.get('first_name', ''),
        'last_name': self.validated_data.get('last_name', '')
    }
def save(self, request):
    adapter = get_adapter()
    user = adapter.new_user(request)
    self.cleaned_data = self.get_cleaned_data() 
    adapter.save_user(request, user, self)
    setup_user_email(request, user, [])

    user.address = self.cleaned_data.get('address')
    user.user_type = self.cleaned_data.get('user_type')

    user.save()
    return user 

标签: pythondjangoapidjango-rest-frameworkdjango-rest-auth

解决方案


我们可以通过覆盖相应的视图来做到这一点,就像我们在这里所做的那样,有没有办法改变登录的 Django-rest-auth 视图?.
不同之处在于,覆盖功能。在这里,我们需要重写该create()方法,

from rest_auth.registration.views import RegisterView


class CustomRegisterView(RegisterView):
    def create(self, request, *args, **kwargs):
        response = super().create(request, *args, **kwargs)
        custom_data = {"message": "some message", "status": "ok"}
        response.data.update(custom_data)
        return response

并且在urls.py

urlpatterns = [
                  url(r'custom/registration/', CustomRegisterView.as_view(), name='my_custom_registration')

              ] 

推荐阅读