Django

Code

Ticket #8287 (closed: fixed)

Opened 4 months ago

Last modified 3 months ago

Debug page shows wrong URL info when altering request.path

Reported by: kratorius Assigned to: nobody
Milestone: 1.0 Component: HTTP handling
Version: SVN Keywords: request.path, urlconf, urls
Cc: Triage Stage: Accepted
Has patch: 1 Needs documentation: 0
Needs tests: 0 Patch needs improvement: 0

Description

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 [8015]. 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.

Attachments

wrong-url-r8338.patch (3.6 kB) - added by Giuliani Vito Ivan <giuliani.v@gmail.com> on 08/13/08 13:29:29.
Shows right URL informations in debug page

Change History

08/13/08 13:11:16 changed by mtredinnick

  • needs_better_patch changed.
  • needs_docs changed.
  • stage changed from Unreviewed to Accepted.
  • needs_tests changed.
  • milestone set to 1.0.

This is just an oversight when #245 was fixed. I didn't realise there was a change needed in the debug page.

08/13/08 13:29:29 changed by Giuliani Vito Ivan <giuliani.v@gmail.com>

  • attachment wrong-url-r8338.patch added.

Shows right URL informations in debug page

08/13/08 14:15:27 changed by kratorius

  • has_patch set to 1.

08/14/08 04:01:22 changed by kratorius

The patch was written by me, just forgot to login.

08/14/08 06:02:20 changed by jcassee

Actually, I like the fact that the debugging page shows request.path instead of path_info. I too have been manipulating the request path (http://code.google.com/p/django-localeurl/, are we doing the same thing kratorius?) and I like the fact that the debug page shows the URL before the mangling sets in. On the other hand, path_info is probably what you want if you're debugging.

08/14/08 09:01:30 changed by kratorius

  • summary changed from Debug page shows wrong URL info to Debug page shows wrong URL info when altering request.path.

I thought the same thing, that's why I was asking if this was an intentional behaviour. But anyway if you're debugging (and this is the case, since we're talking about the debug page) the correct thing to do is to show the URL that is actually being evaluated rather then the actual, real, URL, otherwise there's the risk that you spend a lot of time trying to understand what's happening because the debug page doesn't give you any useful informations.

Anyway, we're doing more or less the same thing, except that your django-localeurl is much more complete than mine, and I'm going to replace my stuff with that :)

08/27/08 14:59:29 changed by jacob

  • status changed from new to closed.
  • resolution set to fixed.

(In [8633]) Fixed #8287: the debug page now shows the actual requested URL even if you've messed with request.path. Patch from Giuliani Vito Ivan.


Add/Change #8287 (Debug page shows wrong URL info when altering request.path)




Change Properties
Action