class LoginFormView(FormView): form_class = AuthenticationForm template_name = "login.html" success_url = "/" def form_valid(self, form): self.user = form.get_user() login(self.request, self.user) return super(LoginFormView, self).form_valid(form) def form_invalid(self, form): return super(LoginFormView, self).form_invalid(form)
сам профиль:
class ProfileView(LoginRequiredMixin, DetailView): model = User template_name = 'profile.html' pk_url_kwarg = 'user_pk'
class UpdateProfileView(LoginRequiredMixin, UpdateView): form_class = UpdateForm model = User template_name = 'profile_update.html' pk_url_kwarg = 'user_pk' def get(self, request, *args, **kwargs): user = User.objects.get(pk=self.kwargs['user_pk']) if user != request.user: return HttpResponseForbidden() else: return super(UpdateProfileView, self).get(request, *args, **kwargs) def get_success_url(self): return reverse('profile_update', kwargs={'user_pk': self.kwargs['user_pk']})
Суть в том что если я в адресной строке изменяю id юзера при просмотре профиля, происходит перелогин под соответствующий id. И если во вьюхе редактирования в методе get я вставил костыльную проверку на конкретного пользователя, чтоб в ином случае ограничивал доступ, то просто при просмотре не могу понять как поступить.
url:
url(r'^profile/(?P<user_pk>\d+)/$', ProfileView.as_view(), name='profile')
<li><a href="{% url 'profile' user_pk=user.pk %}">профиль</a></li>
если честно, я вообще не совсем понимаю, почему происходит перелогин в данном случае, подскажите хоть в каком направлении копать