Передача значения в теге якоря в django

Итак, я нахожусь на странице своего профиля и хочу отредактировать свой профиль, поэтому я нажимаю кнопку edit, она переводит меня на страницу редактирования, где у меня есть две кнопки 'save' (внутри тега формы) иamp; 'Exit'. Теперь, если я нажму кнопку exit, я хочу получить перенаправление на страницу профиля того же человека. Какой вход я должен передать в нижеприведенный тег, чтобы сделать это?

(<a href="{% url 'profile'  %}"><button>Exit</button></a>

Для возврата к определенному профилю вам понадобится url с profile/int:id и нужно передать уникальный id этого профиля в url при вызове exit.

Ниже приведен пример, как это можно сделать, где profile.id содержит значение идентификатора профиля.

<a href="{% url 'profile' id=profile.id %}"><button>Exit</button></a>

Я не согласен с другими ответами. Если вы находитесь на странице своего профиля, это означает, что вы вошли в систему.

В этом случае не нужно определять user.pk, и это лучше для удобства использования - я могу просто сохранить ссылку mydomain/profile вместо mydomain/profile/user_pk.

Но вы должны определить, как вы получаете пользователя из запроса.

class ProfileView(LoginRequiredMixin, DetailView):
    model = User

    def get_object(self, *args, **kwargs):
        self.kwargs['pk'] = self.request.user.pk
        return super().get_object(*args, **kwargs)

Я уверен, что это лучшее решение, чем отправлять pk в url.

LoginRequiredMixin- стандартный django mixin для GCBV DeteilView - django GCBV

Больше здесь: https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.mixins.LoginRequiredMixin

и

https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-display/#detailview

Вернуться на верх