Hi Jay,

First, I'd like to say that your post was very nicely done. You did not miss 
any conventions as far as I could see. I believe the only reason you got no 
responses so far is that the issue is relatively fringe, and your message was 
relatively long.

For the subject matter, though, it seems like your use case could be easily 
served by using the stdlib's urllib.parse.quote_plus (or urllib.quote_plus, if 
you're on Python 2) in your WSGI middleware. This should give you the 
parameters of interest in the format you're looking for, without changing 
Django's code, and while still enjoying the other benefits of URL 
normalization. It seems you have considered only alternatives for passing the 
original data into your code, and passed over the idea of reconstructing from 
available data. Or, if this is what you meant by

> [...] custom query string
> processing for this use case, which would be less compatible and may break
> other expected behaviours.

I think you'll need to give a little more details for the argument to be 
convincing.

Of your other comments, this caught my attention:

> *Could be used inappropriately and may need to be cautioned against*
> 
> I don't see why there is any need for it to be documented, it is providing
> optional access to an internal, as is the case with WSGI parameters in
> other web servers. 

If a feature is not documented, it means you should not rely on it. 
Undocumented APIs are usually added because they are required for implementing 
some documented feature; adding undocumented APIs on their own makes little 
sense.

> That aside, I disagree that requiring caution
> invalidates the value in making a tool available to users.

Requiring caution, in and of itself, does not invalidate the value of making a 
tool available to users -- but it does detract from it. We then ask ourselves 
if we can recommend safer alternatives, and I believe I have.

Hope this helps,
        Shai.

Reply via email to