python - 有什么方法可以改变注册的 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
解决方案
我们可以通过覆盖相应的视图来做到这一点,就像我们在这里所做的那样,有没有办法改变登录的 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')
]