#23716 closed Uncategorized (invalid)
Reverse url doesn't container port-number
Reported by: | Lars Solberg | Owned by: | nobody |
---|---|---|---|
Component: | Core (URLs) | Version: | 1.7 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
When developing sites, you are often ending up with using something that is not port 80 or 443 to test your site.
Looks like this breaks the stuff like from django.core.urlresolvers.reverse.
Digging into the problem, I found that the problem was around https://github.com/django/django/blob/1.7/django/http/request.py#L129
The solution is fairly simple by changing the current_uri line to eg:
"""
current_uri = '%s://%s%s%s' % (self.scheme,
self.get_host(), ':%s' % (self.METASERVER_PORT if self.METASERVER_PORT not in ['80', '443'] else ), self.path)
"""
However, I have the feeling that this would have been fixed a long time ago, and is probably left out by design. Or?
Change History (5)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
What about the logic in get_host()
: https://github.com/django/django/blob/d92b08536d873c0966e8192e64d8e8bd9de79ebe/django/http/request.py#L65-L75
Maybe your Web server isn't setting the headers appropriately?
comment:3 by , 10 years ago
Resolution: | → needsinfo |
---|---|
Status: | new → closed |
comment:4 by , 10 years ago
Sorry for the late response, but this helped me a lot to fix my issue! Thanks!
I ended up writing a mini-middleware to get this to work based on an environment-variable.
Dumped it at https://gist.github.com/xeor/2a0de36f7d686448408a if anyone is interested
comment:5 by , 10 years ago
Resolution: | needsinfo → invalid |
---|
Since Django might be running behind reverse proxies, and ending up having a SERVER_PORT that is not the "correct" port. Maybe this is better to have as a configurable option?