Django的HttpResponseRedirect()+ reverse()截断URL中的端口号

时间:2010-09-06 22:49:42

标签: django django-urls

我在端口8000上运行本地开发服务器,因为我的ISP阻止端口80.问题是使用时:

return HttpResponseRedirect(reverse('foobar'))

Django(出于某种原因)从URL中截断端口 - 但在模板标签的上下文中解析它没有问题,例如:{%url foobar%}。

由于我试图减少部署到生产服务器所需的手动更改次数,因此我想避免对网址进行硬编码。

2 个答案:

答案 0 :(得分:1)

reverse(){% url %}不会考虑域和端口 - 它们只是在路径上运行。因此reverse('foobar')的结果是urls.py中与'foobar'匹配的元素 - 例如/foo/bar/

所以其他一些东西必须改变你的网址 - 也许是你的浏览器。

答案 1 :(得分:0)

反向('foobar')在那时评估什么?

是否在站点表中输入了正确的主机:站点端口(如果启用了管理员,则管理员页面通常为http://localhost:8000/admin/sites/site/

您可以使用curl -i从服务器获取完整的响应吗?