Flask:如何从模板目录提供静态文件?

anu*_*jkk 5 python jinja2 flask

我正在使用Flask开发一个SAAS应用程序,希望用户能够创建/上传/使用他们自己的自定义模板。这就是我现在的目录结构:

/flaskapp
    /application.py
    /static
        /style.css
    /templates (site & admin templates goes here)
        /hello.html
    /userdata
        /user1
            /template1
                 hello.html
            /template2
                 hello.html
        /user2
            /template1
                 hello.html
            /template2
                 hello.html
Run Code Online (Sandbox Code Playgroud)

我可以使用通过以下stackoverflow问题找到的解决方案来提供用户指定的模板:如何动态选择用于flask的模板目录?但是如何从模板目录提供静态文件。与其提供静态文件,不如/flaskapp/static/我想使用/flaskapp/userdata/<user>/<current-template>/static/在其中将在运行时动态确定的目录提供静态文件。这该怎么做?

djc*_*djc 1

想必您正在 Flask 前面使用 Web 服务器。解决这个问题的一种方法(我通常在将 Apache + mod_wsgi 用于自定义 WSGI 应用程序时使用)是通过 Web 服务器直接从磁盘提供目录。在 Apache 上,我只是使用 Alias 指令来实现此目的。

如果您想改变每个用户在给定 URL 下提供的文件,则必须通过 Flask 通过管道传输该文件。您必须弄清楚如何正确路由请求;之后,您也许可以使用wsgi.file_wrapper发送正确的文件(尽管我不确定您如何通过 Flask 获得此文件)。