Как получить userid в Django classviews?
У меня есть класс, который изменяет пароль пользователя:
class PasswordsChangeView(PasswordChangeView):
from_class = PasswordChangingForm
success_url = reverse_lazy(
"base:password/passwordsuccess",
)
И я хочу вставить путь изображения аватара пользователя в контекст.
Это изображение находится внутри модели UserComplement.
Когда я создаю функциональные представления, работает следующее:
@login_required
def password_success(request):
try:
obg = UserComplement.objects.get(pk=request.user.id)
context = {
"img_avatar": obg.avatar_image,
}
return render(request, "registration/passwordsuccess.html", context)
except UserComplement.DoesNotExist:
return render(request, "registration/passwordsuccess.html")
Проблема в том, что я не могу получить userID в classviews, чтобы передать его через контекст на success_url.
Это был недостаток знаний о том, как работают представления, основанные на классах. Функция get_context_data хорошо справлялась со своей задачей, возвращая контекст.
class PasswordsChangeView(PasswordChangeView):
from_class = PasswordChangingForm
success_url = reverse_lazy(
"base:password/passwordsuccess",
)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
obj = UserComplement.objects.get(pk=self.request.user.id)
context["img_avatar"] = obj.avatar_image
return context