Ошибка атрибута: объект ‘AnonymousUser’ не имеет атрибута ‘_meta’

#python #django #authentication #attributeerror

Вопрос:

Я совсем новичок в python и django. Вот мой маленький проект, и это сообщение об ошибке, которое я получаю, когда пытаюсь войти в свою учетную запись как пользователь. Я перепробовал все решения, которые получил в результате поиска. Пожалуйста, если вы знаете решение, объясните мне его довольно просто.

Мой вид входа в систему

 def login_view(request):
if request.method == 'POST':
    form = AuthenticationForm(data=request.POST, request=request)
    if form.is_valid:
        user = form.user_cache
        login(request, user)
        return redirect('accounts:user-home')
else:
    form = AuthenticationForm()
return render(request, 'login.html', {'form':form})
 

Мой forms.py

 # import form class from django
from django.forms import ModelForm
  
# import GeeksModel from models.py
from .models import *
from django.contrib.auth.models import User
  
# create a ModelForm
class ProfileForm(ModelForm):
    # specify the name of model to use
    class Meta:
        model = Profile
        exclude = [
            'user',
        ]

class UsernameChangeForm(ModelForm):

    class Meta:
        model = User
        fields = ['username', ]
 

Мой login.html

 <h2>Log In</h2>
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">Log In</button>
</form>
<p>Don't have an account yet? <a href="{% url 'accounts:register' %}">Register</a></p>
 

Комментарии:

1. а как насчет того, чтобы переодеться user = form.user_cache user = form.save() ?

2. @mohammad-mirsafaei На самом деле я решил эту проблему, изменив user = form.user_cache на username = form.cleaned_data.get («имя пользователя») и пароль = form.cleaned_data.get («пароль»)