AttributeError at / Объект 'AnonymousUser' не имеет атрибута '_meta'
Я пытался использовать страницу входа, но появилась эта ошибка.
Изображение ошибки при запуске в браузере Mozilla localhost
Я пробовал решение, используя эту ссылку и в итоге смешал модель auth с моделью чатбота.
вот ссылка на весь мой файл views.py приложения chatbot.
def get(self, request):
return render(request, 'chatbot/signin.html')
def post(self, request):
context = {
'data': request.POST,
'has_error': False
}
username = request.POST.get('username')
password = request.POST.get('pass1')
if username == '':
messages.add_message(request, messages.ERROR,
'Username is required')
context['has_error'] = True
if password == '':
messages.add_message(request, messages.ERROR,
'Password is required')
context['has_error'] = True
user = authenticate(request, username=username, password=password)
# if not user and not context['has_error']:
# messages.add_message(request, messages.ERROR, 'Invalid login')
# context['has_error'] = True
if context['has_error']:
return render(request, 'chatbot/signin.html', status=401, context=context)
login(request, user)
return redirect('chatpage')
и Это мой models.py чатбота
from django.db import models
from django.contrib.auth import get_user_model
# Create your models here.
Mod = get_user_model()
class User(Mod):
is_email_verified = models.BooleanField(default=False)
def __str__(self):
return self.email
и вот что он показывает в терминале
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
June 27, 2022 - 09:27:56
Django version 4.0.5, using settings 'Eva_Chatbot.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[27/Jun/2022 09:28:04] "GET / HTTP/1.1" 200 64086
Internal Server Error: /
Traceback (most recent call last):
File "/home/aman/anaconda3/envs/chatbot/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/home/aman/anaconda3/envs/chatbot/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/aman/anaconda3/envs/chatbot/lib/python3.10/site-packages/django/views/generic/base.py", line 84, in view
return self.dispatch(request, *args, **kwargs)
File "/home/aman/anaconda3/envs/chatbot/lib/python3.10/site-packages/django/views/generic/base.py", line 119, in dispatch
return handler(request, *args, **kwargs)
File "/home/aman/Documents/chatbotEva/Eva_Chatbot/chatbot/views.py", line 141, in post
login(request, user)
File "/home/aman/anaconda3/envs/chatbot/lib/python3.10/site-packages/django/contrib/auth/__init__.py", line 138, in login
request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)
File "/home/aman/anaconda3/envs/chatbot/lib/python3.10/site-packages/django/utils/functional.py", line 259, in inner
return func(self._wrapped, *args)
AttributeError: 'AnonymousUser' object has no attribute '_meta'
[27/Jun/2022 09:28:09] "POST / HTTP/1.1" 500 83583
Что вызывает эту ошибку? И как ее решить?
а также моя проверка электронной почты также не работает по какой-то причине я пытался решить ее и закончил с этой ошибкой. Если кто-нибудь знает какой-нибудь учебник по этому вопросу или по проверке электронной почты для страницы "Забыли пароль", пожалуйста, прокомментируйте ссылку.
Это происходит потому, что вы пытаетесь login(request, user)
даже если authenticate
возвращает None
вместо объекта User
. Самое простое исправление:
if not user:
# render/redirect as you please - user=None means that given credentials didn't pass to any User
else:
login(request, user)