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

发布于 2024-09-18 16:13:10 字数 258 浏览 3 评论 0原文

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

return HttpResponseRedirect(reverse('foobar'))

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

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

I run my local development server on port 8000 because my ISP blocks port 80. The problem is when using:

return HttpResponseRedirect(reverse('foobar'))

Django (for some reason) truncates the port from the URL - but it has no problem resolving it in the context of template tags e.g.: {% url foobar %}.

Since I'm attempting to reduce the number of manual changes required to deploy to our production server, I'd like to avoid hardcoding the url.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦中楼上月下 2024-09-25 16:13:10

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

所以一定有其他东西正在改变你的 URL——也许是你的浏览器。

reverse() and {% url %} don't take any account of the domain and port - they just operate on the path. So the result of reverse('foobar') is the element in your urls.py that matches to 'foobar' - for example, /foo/bar/.

So something else must be changing your URL - perhaps your browser.

心如狂蝶 2024-09-25 16:13:10

此时,reverse('foobar') 的计算结果是什么?

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

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

What does reverse('foobar') evaluate to at that point?

Is the correct host:port of the site entered in the sites table (Admin page is usually http://localhost:8000/admin/sites/site/ if admin is enabled)

Can you use curl -i to get the complete response from the server?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文