“AnonymousUser”对象在登录期间没有属性“_meta”

问题描述 投票:0回答:1

我在Django 1.11中有一个应用程序,我的问题是一个错误:

'AnonymousUser' object has no attribute '_meta'

它出现在登录时。以前用户是使用自定义注册表单创建的(我使用的是email地址而不是username)。用户已创建,因为我可以登录/admin/的管理面板。

以下是我的登录表格:

class LoginForm(AuthenticationForm):
    email = forms.CharField(label='Email',
                               max_length=50,
                               widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Email',
                                                             'type': 'text', 'id': 'email'}))
    password = forms.CharField(label='Password',
                               max_length=50,
                               widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Password',
                                                             'type': 'password', 'id': 'password'}))

    field_order = ['email', 'password']

    def __init__(self, *args, **kwargs):
        super(LoginForm, self).__init__(*args, **kwargs)
        self.fields.pop('username')

追溯

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/login/

Django Version: 1.11.16
Python Version: 3.5.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'base',
 'accounts',
 'django.forms',
 'search',
 'django_elasticsearch_dsl',
 'widget_tweaks',
 'ckeditor',
 'ckeditor_uploader',
 'raven.contrib.django.raven_compat',
 'debug_toolbar']
Installed Middleware:
['raven.contrib.django.middleware.DjangoRestFrameworkCompatMiddleware',
 'raven.contrib.django.middleware.SentryMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'debug_toolbar.middleware.DebugToolbarMiddleware']



Traceback:

File "project/venv/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "project/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "project/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "project/venv/lib/python3.5/site-packages/django/views/generic/base.py" in view
  68.             return self.dispatch(request, *args, **kwargs)

File "project/venv/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapper
  67.             return bound_func(*args, **kwargs)

File "project/venv/lib/python3.5/site-packages/django/views/decorators/debug.py" in sensitive_post_parameters_wrapper
  76.             return view(request, *args, **kwargs)

File "project/venv/lib/python3.5/site-packages/django/utils/decorators.py" in bound_func
  63.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "project/venv/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapper
  67.             return bound_func(*args, **kwargs)

File "project/venv/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapped_view
  149.                     response = view_func(request, *args, **kwargs)

File "project/venv/lib/python3.5/site-packages/django/utils/decorators.py" in bound_func
  63.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "project/venv/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapper
  67.             return bound_func(*args, **kwargs)

File "project/venv/lib/python3.5/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  57.         response = view_func(request, *args, **kwargs)

File "project/venv/lib/python3.5/site-packages/django/utils/decorators.py" in bound_func
  63.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "project/venv/lib/python3.5/site-packages/django/contrib/auth/views.py" in dispatch
  90.         return super(LoginView, self).dispatch(request, *args, **kwargs)

File "project/venv/lib/python3.5/site-packages/django/views/generic/base.py" in dispatch
  88.         return handler(request, *args, **kwargs)

File "project/venv/lib/python3.5/site-packages/django/views/generic/edit.py" in post
  183.             return self.form_valid(form)

File "project/venv/lib/python3.5/site-packages/django/contrib/auth/views.py" in form_valid
  119.         auth_login(self.request, form.get_user())

File "project/venv/lib/python3.5/site-packages/django/contrib/auth/__init__.py" in login
  155.     request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)

File "project/venv/lib/python3.5/site-packages/django/utils/functional.py" in inner
  239.         return func(self._wrapped, *args)

Exception Type: AttributeError at /accounts/login/
Exception Value: 'AnonymousUser' object has no attribute '_meta'
python django authentication login admin
1个回答
0
投票

要在记录时使用email,请在模型USERNAME_FIELD = 'email'中添加它,然后重试。

© www.soinside.com 2019 - 2024. All rights reserved.