#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)