【问题标题】:Configuring redirection in Flask在 Flask 中配置重定向
【发布时间】:2021-01-23 05:39:21
【问题描述】:

嗨,我对 Flask 很陌生。我正在创建一个博客,我在其中从其他站点抓取一些文章,也从数据库(MySQL)中抓取一些文章。 我的网址:

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 存储在数据库中。我在数据库中上传的博客运行良好。只想为外部博客或新闻文章配置重定向。

对于存储为 slug 的外部 URL,它返回 404: 网址: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 新手,无法按照应有的方式进行查询。

【问题讨论】:

  • 欢迎来到 SO。您需要在帖子中包含您的代码。
  • 您可以为/post/&lt;url&gt;注册一个路由,然后使用url在数据库中查找条目,然后重定向到正确的URL?
  • @MatsLindh 有解决方案

标签: python flask redirect flask-sqlalchemy


【解决方案1】:

我想出了另一个解决方案,并且它奏效了(至少目前如此)。 返回 404 错误的 url 我拆分它并使用错误处理程序获取它应该重定向的 url。 下面是代码。

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

所以上面的代码在 post/ 之后返回了剩余的 url。 IE。 (https://bitcoinist.com/beware-bullish-bitcoin-case-could-be-due-to-cftc-scramble/)(检查问题以供参考)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2012-12-25
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多