2015-06-12 1 views
0

Код в шаблоне заключается в следующем:url_for() не работает воли, когда я использую Nginx

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

Мой блог Ссылка локальный: 5000/индекс/все, он выглядит (используйте приложение .run()):

enter image description here

URL-адрес для первого поста является локальный: 5000/запись/10

Но если я использую FCGI и Nginx, он выглядит следующим образом:

enter image description here

URL-адрес для первого поста является локальный: 5000/индекс/все/пост/10, которые не существуют на самом деле.

Почему url_for() не вернул правильный URL-адрес, когда я использую nginx?

+1

Здесь очень сложно увидеть проблему, пожалуйста, подумайте о повторной фразировке для ясности. В общем, nginx не имеет ничего общего с url_for, который является внутренним в колбе. Вы должны убедиться, что страница отображается правильно с ожидаемым результатом, проверив элемент ссылки на самой странице, используя функциональность «проверять элемент» браузера. Для меня «.post» кажется немного странным, не знаю, почему это должно быть «.». (точка). –

+0

теперь это более понятно, у вас есть относительная абсолютная проблема, см. Http://stackoverflow.com/questions/12162634/where-do-i-define-the-domain-to-be-used-by-url-for в-фляже, я думаю, что _external = True в параметрах url_for должен работать в вашем случае. –

+0

@GG_Python Я думаю, что я не описываю свою проблему clear.It выглядит похожим, но разные вопросы с этим вопросом. Ничего. Я решаю эту проблему, и я добавлю ответ в следующем –

ответ

0

Я также задать этот вопрос в Github .THANKS помощи miguelgrinberg, в это решается

FastCGI, как правило, имеют такие проблемы, как это, где по нечетным причинам переменные CGI окружения передаются приложению установлены неправильно.

Я добавляю две строки в manage.py, и это хорошо работает в nginx.

from werkzeug.contrib.fixers import CGIRootFix 


app = CGIRootFix(app,app_root='/') 
Смежные вопросы