Как выполнить перенаправление на предыдущую страницу?

Как правильно реализовать возврат на предыдущую страницу после редактирования комментария? Я использую обработчик обновления комментария, который выглядит следующим образом:  
```python
@app.route('/update_comment/<int:id>', methods=["POST", "GET"])
def update_comment(id):
    comment = Comments.query.get_or_404(id)
    if request.method == "POST":
        comment.text_comment = request.form["text_comment"]
        try:
            db.session.commit()
            flash("Комментарий успешно изменен")
            return redirect()  # что тут написать чтобы вернуться на пред страницу?
        except:
            return "При изменении комментария произошла ошибка"
    else:
        return render_template('update_comment.html', comment=comment)
```  
Я пробовал использовать `request.url`, но это перенаправляет меня на страницу редактирования комментария, вместо того чтобы вернуться на страницу с комментариями.
  • 28 сентября 2024 г. 17:33
Ответы на вопрос 2
Чтобы перенаправить пользователя на предыдущую страницу после обновления комментария, вы можете использовать `request.referrer`. Этот объект содержит URL предыдущей страницы, с которой пришел пользователь. Вот как вы можете изменить ваш обработчик `update_comment`:

```python
from flask import request

@app.route('/update_comment/<int:id>', methods=["POST", "GET"])
def update_comment(id):
    comment = Comments.query.get_or_404(id)
    if request.method == "POST":
        comment.text_comment = request.form["text_comment"]
        try:
            db.session.commit()
            flash("Комментарий успешно изменен")
            return redirect(request.referrer or '/')  # Перенаправление на предыдущую страницу или на главную, если referrer отсутствует
        except:
            return "При изменении комментария произошла ошибка"
    else:
        return render_template('update_comment.html', comment=comment)
```

### Пояснения:
- `request.referrer` возвращает URL страницы, с которой пользователь пришел на редактирование комментария.
- `or '/'` используется для обработки случая, когда `referrer` может отсутствовать (например, если пользователь пришел на страницу комментария напрямую). В этом случае вы можете перенаправить его на главную страницу (или другую подходящую страницу).

### Важно:
Убедитесь, что у вас настроена обработка ошибок и других успешных действий, чтобы избежать ситуаций, когда неудачное обновление вызывает редирект на `referrer`, что может приводить к нежелательным результатам.
Очевидно, у комментария есть foreign key на пост, соответственно можно сконструировать url поста, к которому относился отредактированный комментарий.
Похожие вопросы