我在端口8000上运行本地开发服务器,因为我的ISP阻止端口80.问题是使用时:
return HttpResponseRedirect(reverse('foobar'))
Django(出于某种原因)从URL中截断端口 - 但在模板标签的上下文中解析它没有问题,例如:{%url foobar%}。
由于我试图减少部署到生产服务器所需的手动更改次数,因此我想避免对网址进行硬编码。
答案 0 :(得分:1)
reverse()
和{% url %}
不会考虑域和端口 - 它们只是在路径上运行。因此reverse('foobar')
的结果是urls.py中与'foobar'匹配的元素 - 例如/foo/bar/
。
所以其他一些东西必须改变你的网址 - 也许是你的浏览器。
答案 1 :(得分:0)
反向('foobar')在那时评估什么?
是否在站点表中输入了正确的主机:站点端口(如果启用了管理员,则管理员页面通常为http://localhost:8000/admin/sites/site/)
您可以使用curl -i从服务器获取完整的响应吗?