Debug page shows wrong URL info when altering request.path
|Reported by:||kratorius||Owned by:||nobody|
|Severity:||Keywords:||request.path, urlconf, urls|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
Not sure if this is a bug or an expected behavior, but anyway...
I have a middleware that alters request.path in order to hide a certain part of the URL to the views, so if I have an URL like /en/view/page/ this should become /view/page/. With recent upgrades this stopped working, and after a bit of investigating I found that this was due to .
I spent a lot of time trying to understand why this was failing, since the debug page was showing the output I was expecting. For example, for /en/view/page I got:
Using the URLconf defined in project.urls, Django tried these URL patterns, in this order: ... 3. ^view/(?P<title_slug>[\w-]+)/$ ... The current URL, view/page/, didn't match any of these.
While view/page/ matches the 3rd url pattern.
This happens because the debug page shows request.path, while the URLconf actually evaluates PATH_INFO and SCRIPT_NAME.
I fixed the problem by altering request.path_info as well, but shouldn't the debug page show the URL that is actually evaluated by URLconf?
In case this should be fixed I can provide a patch, but actually I don't know if .path_info should be always shown or must be shown only in certain places within the debug page.
Change History (8)
comment:1 Changed 7 years ago by mtredinnick
- milestone set to 1.0
- Needs documentation unset
- Needs tests unset
- Patch needs improvement unset
- Triage Stage changed from Unreviewed to Accepted
Changed 7 years ago by Giuliani Vito Ivan <giuliani.v@…>
comment:5 Changed 7 years ago by kratorius
- Summary changed from Debug page shows wrong URL info to Debug page shows wrong URL info when altering request.path