Python 正在重定向到Flask中的外部域

Python 正在重定向到Flask中的外部域,python,redirect,flask,Python,Redirect,Flask,我正在编写一个非常简单的flask应用程序(URL缩短器),它应该能够将某些请求重定向到其他任意域。然而,我在重定向方面遇到了问题。例如,这种精简版本不起作用: from app import app, db from flask import abort, redirect @app.route('/') def index(): return "Hello, world" @app.route('/favicon.ico') def favicon(): abort(40

我正在编写一个非常简单的flask应用程序(URL缩短器),它应该能够将某些请求重定向到其他任意域。然而,我在重定向方面遇到了问题。例如,这种精简版本不起作用:

from app import app, db
from flask import abort, redirect

@app.route('/')
def index():
    return "Hello, world"

@app.route('/favicon.ico')
def favicon():
    abort(404)

@app.route('/<slug>')
def redirect(slug):
    return redirect('http://google.com/')
从应用程序导入应用程序,数据库
从烧瓶导入中止,重定向
@应用程序路径(“/”)
def index():
返回“你好,世界”
@应用程序路径('/favicon.ico')
def favicon():
中止(404)
@应用程序路径(“/”)
def重定向(缓动):
返回重定向('http://google.com/')

也许很天真,我希望它重定向到google.com,但是这个重定向似乎被Flask“捕获”,它试图通过重定向处理程序将重定向的URL路由回(例如
redirect(slug=”http://google.com/)直到它通过递归和错误耗尽所有堆栈空间。我似乎不知道为什么会发生这种情况,或者如何解决它,但我真的很希望指针指向正确的方向。

问题在于这个函数:

@app.route('/<slug>')
def redirect(slug):
    return redirect('http://google.com/')
@app.route(“/”)
def重定向(缓动):
返回重定向('http://google.com/')
您将函数命名为
redirect()
,因此在调用
return redirect(…)
时,在函数的作用域中,这被解释为递归调用,因为视图函数隐藏了同名函数。您传递的URL被映射到递归调用中的
slug
参数


将view函数的名称从
redirect()
更改为其他名称,代码将正常工作。

此函数中存在问题:

@app.route('/<slug>')
def redirect(slug):
    return redirect('http://google.com/')
@app.route(“/”)
def重定向(缓动):
返回重定向('http://google.com/')
您将函数命名为
redirect()
,因此在调用
return redirect(…)
时,在函数的作用域中,这被解释为递归调用,因为视图函数隐藏了同名函数。您传递的URL被映射到递归调用中的
slug
参数


将view函数的名称从
redirect()
更改为其他名称,代码将正常工作。

此函数中存在问题:

@app.route('/<slug>')
def redirect(slug):
    return redirect('http://google.com/')
@app.route(“/”)
def重定向(缓动):
返回重定向('http://google.com/')
您将函数命名为
redirect()
,因此在调用
return redirect(…)
时,在函数的作用域中,这被解释为递归调用,因为视图函数隐藏了同名函数。您传递的URL被映射到递归调用中的
slug
参数


将view函数的名称从
redirect()
更改为其他名称,代码将正常工作。

此函数中存在问题:

@app.route('/<slug>')
def redirect(slug):
    return redirect('http://google.com/')
@app.route(“/”)
def重定向(缓动):
返回重定向('http://google.com/')
您将函数命名为
redirect()
,因此在调用
return redirect(…)
时,在函数的作用域中,这被解释为递归调用,因为视图函数隐藏了同名函数。您传递的URL被映射到递归调用中的
slug
参数


将视图函数的名称从
重定向()
更改为其他名称,您的代码将正常工作。

@Miguel谢谢,我也犯了同样的错误,笨蛋!在这上面浪费了一个小时。@Miguel谢谢你!6年后,回复把我从这个无法理解的愚蠢问题中解救出来。@Miguel谢谢你,我也犯了同样的错误,愚蠢!在这上面浪费了一个小时。@Miguel谢谢你!6年后,回复把我从这个无法理解的愚蠢问题中解救出来。@Miguel谢谢你,我也犯了同样的错误,愚蠢!在这上面浪费了一个小时。@Miguel谢谢你!6年后,回复把我从这个无法理解的愚蠢问题中解救出来。@Miguel谢谢你,我也犯了同样的错误,愚蠢!在这上面浪费了一个小时。@Miguel谢谢你!6年后,回复让我从这个无法理解的愚蠢问题中解脱出来。。