您好,我有一个项目,我从BaseUserManager继承创建了自己的用户模型
class MyAccountManager(BaseUserManager):
def create_user(self, email, first_name, last_name, password=None):
if not email:
raise ValueError('Este es un campo requerido')
if not first_name:
raise ValueError('Este es un campo requerido')
if not last_name:
raise ValueError('Este es un campo requerido')
user = self.model(
email=self.normalize_email(email),
first_name=first_name,
last_name=last_name,
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, first_name, last_name, password):
user = self.create_user(
email=self.normalize_email(email),
password=password,
first_name=first_name,
last_name=last_name,
)
user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user``
现在,我还想为用户添加通过facebook登录的选项,但这给了我一个例外,即create_user()缺少两个必需的位置参数:“first_name”和“last_name”,因为我修改了模型以请求这些字段,而不是用户名和其他更改。如何使它能够正确地与我的自定义用户模型配合使用
这是完整的回溯:
Traceback:
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\django\core\handlers\base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\django\core\handlers\base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\django\views\decorators\cache.py" in _wrapped_view_func
44. response = view_func(request, *args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view
54. return view_func(*args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_django\utils.py" in wrapper
49. return func(request, backend, *args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_django\views.py" in complete
31. return do_complete(request.backend, _do_login, user=request.user,
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_core\actions.py" in do_complete
45. user = backend.complete(user=user, *args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_core\backends\base.py" in complete
40. return self.auth_complete(*args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_core\utils.py" in wrapper
251. return func(*args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_core\backends\facebook.py" in auth_complete
111. return self.do_auth(access_token, response, *args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_core\backends\facebook.py" in do_auth
153. return self.strategy.authenticate(*args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_django\strategy.py" in authenticate
107. return authenticate(*args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\django\contrib\auth\__init__.py" in authenticate
73. user = backend.authenticate(request, **credentials)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_core\backends\base.py" in authenticate
80. return self.pipeline(pipeline, *args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_core\backends\base.py" in pipeline
83. out = self.run_pipeline(pipeline, pipeline_index, *args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_core\backends\base.py" in run_pipeline
113. result = func(*args, **out) or {}
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_core\pipeline\user.py" in create_user
75. 'user': strategy.create_user(**fields)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_core\strategy.py" in create_user
53. return self.storage.user.create_user(*args, **kwargs)
File "C:\Users\Roberto\Desktop\radlab\dev\radlab_site\lib\site-packages\social_django\storage.py" in create_user
80. user = cls.user_model().objects.create_user(*args, **kwargs)
Exception Type: TypeError at /oauth/complete/facebook/
Exception Value: create_user() missing 2 required positional arguments: 'first_name' and 'last_name'
在阅读了库中的一堆文件后,我发现您只需将以下代码行
USER_FIELDS = ['field1', 'field2', ... , 'fieldn']
添加到settings.py
文件中,就可以告诉应用程序您已经修改了create_user()函数以获取USER_FIELDS
中的字段相关问题 更多 >
编程相关推荐