2016-07-22 3 views
0

Хорошо, у вас есть представление класса, которое передает query_set в мой класс AssignedToMe. Точка зрения на основе этого класса состоит в том, чтобы увидеть, зарегистрирован ли пользователь и если они есть, они могут перейти на страницу и отобразить все записи, которые назначены их идентификатору. В настоящее время он работает так, как я хочу, но только если пользователь вошел в систему. Если пользователь не вошел в систему, я получаю следующую ошибку: 'AnonymousUser' object is not iterable.
Я хочу, чтобы он перенаправлял пользователя на страницу входа в систему, если пользователь не зарегистрирован. Спасибо заранее. Пожалуйста, посмотрите на скриншотClass Based View, чтобы получить аутентификацию пользователя в Django

+1

Вы используете [@login_required] (https://docs.djangoproject.com/en/1.9/topics/auth/default/#django.contrib.auth.decorators.login_required) декоратор? Если да, у вас есть 'LOGIN_URL', определенный в вашем' settings.py' –

+0

Да, я пробовал использовать @login_required, и он тоже не работал, продолжал получать «AssignToMe» не объект «пользователь» –

ответ

0

Я не знаю, Что контекст вашего ClassBasedView ... но вы можете использовать LoginRequiredMixin требовать логина перед вызовом класса:

class ServerDeleteView(LoginRequiredMixin, DeleteView): model = Server success_url = reverse_lazy('ui:dashboard')

1

Вы можете создать логин требуемый mixin для использования в ваших ClassBasedViews:

from django.utils.decorators import method_decorator 
from django.contrib.auth.decorators import login_required 

class LoginRequiredMixin(object): 
    @method_decorator(login_required) 
    def dispatch(self, request, *args, **kwargs): 
     return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs) 

Затем используйте его как @M. Гара предлагает (это должно быть первое). Также убедитесь, что у вас есть LOGIN_URL, определенный в вашем settings.py

Артикул: decorating the class

В качестве альтернативы вы можете выбрать decorate the url.

+0

. Спасибо! –

+0

Добро пожаловать :) Не могли бы вы принять это как ответ? –

Смежные вопросы