在mod_wsgi中,Flask的request.path和url_for不匹配
在Flask中,有没有办法获取包含任何“装饰”的请求路径,这些装饰可能是WSGI
或者其他东西添加的?
在测试模式下(只是在5000端口上),我的request.path
和url_for('settings')
完全匹配,但一旦在WSGI
下运行,正如预期的那样,我的url_for('settings')
变成了/manage/settings/
,而request.path
却显示为/settings/
。
我在我的httpd.conf
中有以下配置,并且正在将一个应用程序从开发环境迁移到上线环境。
WSGIScriptAlias /manage /sw/servermanager/servermanager.wsgi
WSGIDaemonProcess servermgr user=user group=grp threads=4
<Directory /sw/servermanager>
WSGIProcessGroup servermgr
WSGIApplicationGroup %{GLOBAL}
WSGIScriptReloading On
Order deny,allow
Allow from all
</Directory>
我喜欢让模板尽量通用,然后使用CSS动态显示导航信息的想法。我使用了这个答案中提供的技术来构建我的视图,但当我把mod_wsgi
加入进来时,就出现了问题。
我查看了一下请求对象,但没有找到太多我想要的信息,除了可能使用url_rule
,但那里的参数让我有点困惑。
为了保险起见,这里有我正在使用的WSGI脚本的链接:https://github.com/FernFerret/servermanager/blob/master/servermanager.wsgi
我也对request
对象的文档感兴趣,我是通过使用内置调试器和help(request)
来了解它的。
编辑:我应该说,在运行mod_wsgi的Apache下,网址并不匹配。
1 个回答
10
这其实是一个功能,而不是一个错误。你可以查看文档,了解请求中的与URL相关的属性,以及请求对象本身。
你可能想用 request.script_root + request.path
这个组合。