在url_for的所有结果前添加前缀,而无需设置路由所需的前缀

时间:2019-03-14 16:16:18

标签: python flask wsgi prefix

我正在开发在服务器子路由上运行的Flask应用。

以下是该应用的最低版本:

from flask import *

app = Flask(__name__, root_path="/test")
app.config["APPLICATION_ROOT"] = "/test"

@app.route("/")
@app.route("/index")
def index():
    return url_for("index")

@app.route("/test")
def test():
    return url_for("test")

if __name__ == "__main__":
    app.run(port=5000, debug=True)

这是/etc/nginx/nginx.conf的相关部分:

http {
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  localhost;

        location /test {
            return 302 /test/;
        }

        location /test/ {
            proxy_pass http://127.0.0.1:5000/;
        }
    }
}

这样,当我访问http://localhost/test/时,Flask应用程序将在/处收到传入请求,这是由nginx代理的。这是在nginx级别配置的,无法更改,因此应用程序收到的内容将始终被截断/test前缀。

但是我需要url_for生成带有前缀的 网址。我目前在/index看到/test/,但我期望的是/test/index

如代码中所示,APPLICATION_ROOT对我不起作用。

我拥有最新的Flask(1.0.2)和依赖项。

0 个答案:

没有答案