Передача значения в теге якоря в 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