[英]Unusual error in Django. Cannot login into admin after creating superuser
This is a weird problem that I am facing in my Django application. 这是我在Django应用程序中遇到的奇怪问题。
Configuration : 配置:
I have overwritten the create_superuser to: 我已经将create_superuser覆盖为:
def create_superuser(self, email, is_staff, password):
user = self.model(
email=email,
is_staff=True,
is_active=True,
)
user.set_password(password)
user.save(using=self._db)
return user
I am able to create the superuser successfully but I am not able to login into the admin page. 我能够成功创建超级用户,但无法登录到管理页面。 Following is my traceback: 以下是我的回溯:
Internal Server Error: /admin/login/
Traceback (most recent call last):
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
response = get_response(request)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/core/handlers/base.py", line 128, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/contrib/admin/sites.py", line 398, in login
return LoginView.as_view(**defaults)(request)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/views/generic/base.py", line 69, in view
return self.dispatch(request, *args, **kwargs)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/utils/decorators.py", line 62, in _wrapper
return bound_func(*args, **kwargs)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/views/decorators/debug.py", line 76, in sensitive_post_parameters_wrapper
return view(request, *args, **kwargs)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/utils/decorators.py", line 58, in bound_func
return func.__get__(self, type(self))(*args2, **kwargs2)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/utils/decorators.py", line 62, in _wrapper
return bound_func(*args, **kwargs)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/utils/decorators.py", line 142, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/utils/decorators.py", line 58, in bound_func
return func.__get__(self, type(self))(*args2, **kwargs2)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/utils/decorators.py", line 62, in _wrapper
return bound_func(*args, **kwargs)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/utils/decorators.py", line 58, in bound_func
return func.__get__(self, type(self))(*args2, **kwargs2)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/contrib/auth/views.py", line 66, in dispatch
return super().dispatch(request, *args, **kwargs)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/views/generic/base.py", line 89, in dispatch
return handler(request, *args, **kwargs)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/views/generic/edit.py", line 141, in post
if form.is_valid():
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/forms/forms.py", line 179, in is_valid
return self.is_bound and not self.errors
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/forms/forms.py", line 174, in errors
self.full_clean()
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/forms/forms.py", line 377, in full_clean
self._clean_form()
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/forms/forms.py", line 404, in _clean_form
cleaned_data = self.clean()
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/contrib/auth/forms.py", line 195, in clean
self.user_cache = authenticate(self.request, username=username, password=password)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/contrib/auth/__init__.py", line 70, in authenticate
user = _authenticate_with_backend(backend, backend_path, request, credentials)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/contrib/auth/__init__.py", line 116, in _authenticate_with_backend
return backend.authenticate(*args, **credentials)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/contrib/auth/backends.py", line 22, in authenticate
if user.check_password(password) and self.user_can_authenticate(user):
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/contrib/auth/base_user.py", line 111, in check_password
return check_password(raw_password, self.password, setter)
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/contrib/auth/hashers.py", line 42, in check_password
if password is None or not is_password_usable(encoded):
File "/home/fractaluser/dev_eugenie/venv_eugenie/lib/python3.6/site-packages/django/contrib/auth/hashers.py", line 25, in is_password_usable
if encoded is None or encoded.startswith(UNUSABLE_PASSWORD_PREFIX):
AttributeError: 'int' object has no attribute 'startswith'
This is very unusual (I understand what the error means) and I am not able to understand what is causing it or how I can fix it. 这是非常不寻常的(我理解错误的含义),并且我无法理解是什么原因或如何解决。
Were there other changes as well? 还有其他变化吗? I am not able to replicate this issue, if I change the create_superuser
function to what you have posted, I can't even create a superuser. 我无法复制此问题,如果我将create_superuser
函数更改为您发布的内容,我什至无法创建超级用户。 It just fails because the username is still being passed in, which is unexpected. 失败是因为用户名仍在传递,这是意外的。
But if you did happen to get this to run, it looks like the password
argument might be None
which is causing the set_password
function to call set_unusable_password
according to the documentation . 但是,如果确实要使它运行,则看来password
参数可能是None
,这将导致set_password
函数根据文档调用set_unusable_password
。
However, to dig down to what the problem actually is more information would be needed. 但是,要深入了解问题的实质是需要更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.