url_for()没有';当我使用nginx时,它不会工作

url_for()没有';当我使用nginx时,它不会工作,nginx,flask,fastcgi,Nginx,Flask,Fastcgi,我的模板中的代码如下所示: <a href="{{ url_for('.post',id=post.id) }}"><h2 >{{ post.title }}</h2></a> 我的博客url是localhost:5000/index/all,看起来像(使用app.run()): 第一篇文章的url是localhost:5000/post/10 但如果我使用fcgi和nginx,它看起来是这样的: 第一篇文章的url是localhost:

我的模板中的代码如下所示:

<a href="{{ url_for('.post',id=post.id) }}"><h2 >{{ post.title }}</h2></a>

我的博客url是localhost:5000/index/all,看起来像(使用app.run()):

第一篇文章的url是localhost:5000/post/10

但如果我使用fcgi和nginx,它看起来是这样的:

第一篇文章的url是localhost:5000/index/all/post/10,实际上并不存在


当我使用nginx时,为什么url_for()没有返回正确的url?

我在中也问了这个问题。感谢miguelgrinberg的帮助,问题已经解决了

FastCGI往往会出现这样的问题,由于奇怪的原因,传递给应用程序的CGI环境变量设置不正确

我在manage.py中添加了两行代码,它在nginx中运行良好

from werkzeug.contrib.fixers import CGIRootFix


app = CGIRootFix(app,app_root='/')

这里很难看到问题,请考虑清楚的措辞。一般来说,nginx与url_for无关,后者是flask的内部。您应该通过使用浏览器的“inspect element”功能检查页面本身上的链接元素,检查页面是否按照预期正确呈现。对我来说,“.post”似乎有点奇怪,不确定为什么会有“.”(点)。现在这更清楚了,你有一个相对与绝对的问题,看,我认为参数的url中的_external=True应该适用于您的情况。@GG_Python我想我没有清楚地描述我的问题。这个问题看起来很相似,但不同。没关系。我解决了这个问题,我将在下面添加答案