Как получить 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
Вернуться на верх