Django's HttpResponseRedirect () + reverse () сокращает номер порта в URL - PullRequest
2 голосов
/ 07 сентября 2010

Я запускаю свой локальный сервер разработки на порту 8000, потому что мой провайдер блокирует порт 80. Проблема заключается в том, что при использовании:

return HttpResponseRedirect(reverse('foobar'))

Django (по какой-то причине) усекает порт из URL - но он имеетнет проблем с его разрешением в контексте тегов шаблона, например: {% url foobar%}.

Поскольку я пытаюсь сократить количество ручных изменений, необходимых для развертывания на нашем производственном сервере, я бы хотелизбегайте жесткого кодирования URL.

Ответы [ 2 ]

1 голос
/ 07 сентября 2010

reverse() и {% url %} не учитывают домен и порт - они просто работают на пути.Таким образом, результатом reverse('foobar') является элемент в вашем urls.py, который соответствует 'foobar' - например, /foo/bar/.

Итак, что-то еще должно изменить ваш URL - возможно, ваш браузер.

0 голосов
/ 07 сентября 2010

Что оценивает реверс ('foobar') в этот момент?

Правильный хост: порт сайта, указанный в таблице сайтов (страница администратора обычно http://localhost:8000/admin/sites/site/, если администратор включен)

Можете ли вы использовать curl -i для получения полного ответа от сервера?

...