Задать вопрос
Norwich
@Norwich
Web-developer

Как перенаправить на странницу пользователя из комментариев?

Есть контроллер, который получает id пользователя и перенаправляет на его личную странницу с данными. Я не знаю какой аргумент передать в запросе, чтоб перенаправить на корректного пользователя

view.py
def post_detail(request, pk):
    post = Bb.objects.get(id=pk)
    comments = Response.objects.filter(post_id=pk)
    context = {'post': post, 'comments': comments}
    return render(request, 'bboard/bb_detail.html', context)


models.py
class Rreview(models.Model):
    """Отзывы"""
    email = models.EmailField()
    name = models.CharField(verbose_name="Имя", max_length=100, null=True)
    text = models.TextField(verbose_name="Сообщение", max_length=5000)
    parent = models.ForeignKey('self', verbose_name="Родитель", on_delete=models.SET_NULL, blank=True, null=True)
    post = models.ForeignKey(Bb, verbose_name="фильм", on_delete=models.CASCADE)


urls.pu
urlpatterns = [
    path('profile/<int:pk>/', profile_view, name='profile_view'),    
]


Вот тут надо передать запрос
<h3>Отзывы</h3>
    {% for comm in comments  %}
        <p><a href="{% url 'profile_view' comm.user.pk %}">{{ comm.name }}</a></p>
        <p>{{ comm.text }}</p>
        <br>
    {% endfor %}


Подскажите, как передать нужный id?
  • Вопрос задан
  • 82 просмотра
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@kyern
Быдлокодер без стажа
В качестве id надо передавать не comm.user.pk, а comm.name.pk
Но вообще я бы порекомендовал использовать для поля имя user, а не name, как видите, такое название уже ввело вас в заблуждение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@AstraVlad
Финансист, консультант, программист-любитель
Я что-то не понял. Уже ведь есть юзер id, настроен путь с юзер id, в чем проблема?

Хотя если пользователь авторизован, то ничего вообще не нужно передавать и не надо конструировать никаких URL, берем юзера из реквеста и все.

Навскидку из моего кода:
def users_add(request):
    if request.method == 'POST':
        ...
            login(request, user)
            # redirect to a new URL:
            return HttpResponseRedirect('/fighters/add/')


и попадаем в:
def fighter_add(request):
    user = request.user


Если очень хочется идти именно по id, то:
urls.py
path('<int:pk>/', views.fighter_detail, name='fighter_detail')


views.py
def fighter_detail(request, pk):
    try:
        fighter = Fighters.objects.get(id=pk, active=True)
       ...
    except Fighters.DoesNotExist:
        context = {
            'result': 0,
        }

    return render(request, 'fighters/fighter_details.html', context)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы