Настройка перенаправления в Flask

#python #flask #redirect #flask-sqlalchemy

#python #flask #перенаправление #flask-sqlalchemy

Вопрос:

Привет, я в значительной степени новичок в Flask. Я создаю блог, в котором я собираю некоторые статьи с других сайтов, а также несколько статей из базы данных (MySQL). мой URL:

http://127.0.0.1:5000/post/https://bitcoinist.com/beware-bullish-bitcoin-case-could-be-due-to-cftc-scramble/

возвращается

ошибка 404 не найдена.

Я хочу перенаправить это на следующий URL:

https://bitcoinist.com/beware-bullish-bitcoin-case-could-be-due-to-cftc-scramble/

Я не могу жестко запрограммировать этот URL-адрес, поскольку он поступает из slug в базе данных и продолжает меняться. Как перенаправить его с помощью обработчика ошибок или любым другим способом?

Это приведенный ниже код, который извлекает содержимое блога из базы данных. URL, который я хочу перенаправить, хранится в базе данных как slug. Блог, который я загружаю в базу данных, работает нормально. Требуется настроить перенаправление только для внешних блогов или новостных статей.

Для внешнего URL-адреса, который хранится как slug, он возвращает 404: URL: http://127.0.0.1:5000/post/https://bitcoinist.com/beware-bullish-bitcoin-case-could-be-due-to-cftc-scramble/

и хотите перенаправить его на: https://bitcoinist.com/beware-bullish-bitcoin-case-could-be-due-to-cftc-scramble /

 @app.route('/post/<string:post_slug>', methods=['GET'])
def post_route(post_slug):
        post = Posts.query.filter_by(slug=post_slug).first()
        return render_template('post.html', params=params, post=post)
  

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

Комментарии:

1. Добро пожаловать в SO. Вам необходимо включить свой код в свой пост.

2. Вы можете зарегистрировать маршрут для /post/<url> , а затем использовать url для поиска записи в базе данных перед перенаправлением на правильный URL?

3. У @MatsLindh есть решение

Ответ №1:

Я придумал другое решение, и оно сработало (по крайней мере, на данный момент). url, который возвращал ошибку 404, я разделил его и взял URL, на который он должен был перенаправляться, используя обработчик ошибок. Ниже приведен код.

 @app.errorhandler(404)
def go_to(url):
    url = str(str(request.path).split('/post/')[1])
    return redirect(url)
  

итак, приведенный выше код возвращает оставшийся URL-адрес после post/ . т.е.
(https://bitcoinist.com/beware-bullish-bitcoin-case-could-be-due-to-cftc-scramble /) (проверьте вопрос для справки)