Ошибка атрибута: объект «Анонимный пользователь» не имеет атрибута «профиль»

#django #django-forms

#джанго #джанго-формы

Вопрос:

Я создал приложение Django, и оно хорошо работало. Когда я запустил другое приложение django в порту(localhost:8000) и попробовал приложение, которое я создал на порту, оно выдает такую ошибку.

 AttributeError: 'AnonymousUser' object has no attribute 'profile'  

Вот мой код:

 class DashboardView(auth_views.LoginView):  template_name = "dashboard/home.html"  verify_email_required = 'registration/verify_email_required.html'  form_class = ProfiledAuthenticationForm  def get(self, request, *args, **kwargs):  # context = {'form': self.form_class()}    context = self.get_context_data()  context['form'] = self.form_class()    if request.user.profile.is_verified:   return render(request, self.template_name, context)  else:     return render(request, self.verify_email_required, context)  

Примечание: Изначально, когда я создавал приложение, оно работало хорошо, но сейчас оно принимает ошибки. когда пользователь не входит в систему, домашняя страница была перенаправлена на страницу входа.

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

1. У вас есть эта ошибка, потому что код request.user.profile.is_verified верен только в том случае, если пользователь аутентифицирован . Попробуйте добавить аутентифицированное закрытие раньше.

2. Да, я знаю, но я знаю, что класс(DashboardView) вызывается, если пользователь аутентифицирован. Я прав или нет? Я не уверен насчет auth_views. Вид входа в систему

3. Нет смысла вместо from django.contrib.auth.mixins import LoginRequiredMixin этого и class DashboardView(LoginRequiredMixin) .

4. когда я заменил это, произошла ошибка; AttributeError: тип объекта «DashboardView» не имеет атрибута «as_view»

Ответ №1:

Когда я исправляю вот так, все работает хорошо.

 class DashboardView(auth_views.LoginView):  template_name = "dashboard/home.html"  verify_email_required = 'registration/verify_email_required.html'  form_class = ProfiledAuthenticationForm  def get(self, request, *args, **kwargs):  # context = {'form': self.form_class()}    context = self.get_context_data()  context['form'] = self.form_class()  if self.request.user.is_authenticated:  if request.user.profile.is_verified:   return render(request, self.template_name, context)  return render(request, self.verify_email_required, context)  return render(request, self.template_name, context)