我正在使用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
我可以使用通过此stackoverflow问题找到的解决方案来提供用户指定的模板:How to dynamically select template directory to be used in flask?但是如何从模板目录提供静态文件。而不是从/flaskapp/static/
提供静态文件我想使用/flaskapp/userdata/<user>/<current-template>/static/
目录提供静态文件,其中和将在运行时动态确定。怎么做?
答案 0 :(得分:0)
据推测,你正在Flask面前使用网络服务器。解决此问题的一种方法(我通常在将Apache + mod_wsgi用于自定义WSGI应用程序时使用)是通过Web服务器直接从磁盘提供目录。在Apache上,我只是使用Alias指令。
如果要更改每个用户在给定URL下提供的文件,则必须通过Flask管道传输该文件。你必须弄清楚如何正确地路由请求;之后,您可以使用wsgi.file_wrapper发送正确的文件(虽然我不知道您是如何通过Flask获得的。)
答案 1 :(得分:0)
这是我用来从任何系统目录提供文件的。
应用程序在特定目录中搜索特定的请求文件:
当有人访问 http:/host/where/to/serve/files/example_file.txt 时,应用程序会尝试将 example_file.txt 作为附件返回,如果文件不存在它将返回404。
您可以调整此项并使用您的用户变量构建DIRECTORY_TO_SERVE_PATH。
如果您有任何限制,还应该验证要提供的文件,因为会返回路径中存在的任何文件。
X=123 /bin/sh -c 'grep ","$X"$" xyz.txt | grep -v "^"$X","$X"$"'