Я (начинающий) создаю простое приложение для блога.Я создал представление на основе классов для создания поста в блоге, и у него есть отдельный URL.Я хочу, чтобы он перенаправлял на страницу входа (url name = 'login'), если пользователь не вошел в систему. В представлении на основе функций все, что мне нужно сделать, это:
def postCreateView(request):
if not request.user.is_authenticated:
return redirect('login')
Я не знаюне знаю, как сделать это в представлении на основе классов (унаследованном от универсального CreateView).Я попытался изменить метод init () следующим образом:
def redirectLogin(self):
return redirect('login')
def __init__(self, *args, **kwargs):
if(not self.request.user.is_authenticated):
redirectLogin()
super().__init__()
(я назвал класс PostCreateView), но при отладке значение исключения было 'PostCreateView' object has no attribute 'request'
.Мне нужен правильный способ (способ соглашения Django, если он существует), чтобы установить перенаправление на основе условий в представлении на основе классов.
Также я запутался, почему он говорит, что представление не имеет атрибута 'request',У каждого просмотра есть запрос.Я уверен в этом, потому что я переопределил метод form_valid()
, чтобы установить автора сообщения в качестве текущего пользователя, выполнившего вход в систему, следующим образом:
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid()
И он прекрасно работает, когда я вошел в систему и создалсообщение.
Заранее спасибо.