简体   繁体   English

Django中的异常错误。 创建超级用户后无法登录管理员

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM