On Wed, Dec 16, 2009 at 2:53 PM, Mike Malone <mjmal...@gmail.com> wrote:
> On Wed, Dec 16, 2009 at 11:10 AM, Alex Gaynor <alex.gay...@gmail.com> wrote:
>> On Wed, Dec 16, 2009 at 2:02 PM, Mike Malone <mjmal...@gmail.com> wrote:
>>>> The way i see it (which may be wrong), this is not a proposal to make
>>>> the request object global or replace/refactor the contrib.site app. In
>>>> fact, some of the use cases mentioned strike me as things that would
>>>> require overriding the default get_absolute_url method anyway. It
>>>> seems to me like everyone is arguing over things outside the scope of
>>>> this proposal.
>>>
>>> Actually the fundamental disagreement (as far as I can tell) is over
>>> whether the absolute URL should be built using information pulled from
>>> various application settings (Site module, settings file, etc) or
>>> information pulled from the currently active request.
>>>
>>> In my opinion, using the Site module and settings files is damn
>>> annoying. I never use the Site module, and in my experience having to
>>> change the "FRONTEND_URL" of your app every time you push to a
>>> different environment is tedious and a frequent source of subtle
>>> problems. Moreover, the request information in your current request
>>> _should_ always be correct. If someone requests a non-canonical URL
>>> you should redirect (CNAME, 301, etc) to the canonical URL. If your
>>> load balancer isn't sending the correct headers then the load balancer
>>> is broken, not Django.
>>>
>>> That said, it sounds like there are a number of special cases where it
>>> would be useful to override these settings. So maybe the best corse of
>>> action is to try to use the configured Site information and fall back
>>> on "RequestSite", which uses information from the currently active
>>> request.
>>>
>>> Thoughts?
>>>
>>> Mike
>>>
>>> --
>>>
>>> You received this message because you are subscribed to the Google Groups 
>>> "Django developers" group.
>>> To post to this group, send email to django-develop...@googlegroups.com.
>>> To unsubscribe from this group, send email to 
>>> django-developers+unsubscr...@googlegroups.com.
>>> For more options, visit this group at 
>>> http://groups.google.com/group/django-developers?hl=en.
>>>
>>>
>>>
>>
>> I am very strongly against making the request a thread local.  We have
>> used thread locals in a few places (urlconf and i18n are the obvious
>> ones), and while they don't put a smile on my face they do serve a
>> very narrow, well defined purpose, in places where it would often be
>> impossible to get the appropriate context in.
>>
>> However, I think making the entire request object (or even just the
>> domain + SSL state) is an incredibly open ended solution that is rife
>> with potential for abuse.
>>
>> However, I come bearing a solution!
>>
>> Instead of having get_url() or whatever the method is named return a
>> string, have it return a URL object, specifically instantiated with
>> REQUEST_HOST for it's host value.  Then the caller can pass this value
>> around and when it gets returned to the appropriate place where the
>> request is in scope it can interpolate it's values into the URL object
>> appropriately.  This may necessitate adding a template filter ({{
>> obj.get_url|interpolate_request:request }}).
>
> How's that different than the current situation, where we return an
> absolute URL reference that can be converted into an absolute URL
> using request.build_absolute_uri?
>
> Mike
>
>>
>> Alex
>>
>> --
>> "I disapprove of what you say, but I will defend to the death your
>> right to say it." -- Voltaire
>> "The people's good is the highest law." -- Cicero
>> "Code can always be simpler than you think, but never as simple as you
>> want" -- Me
>>
>> --
>>
>> You received this message because you are subscribed to the Google Groups 
>> "Django developers" group.
>> To post to this group, send email to django-develop...@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> django-developers+unsubscr...@googlegroups.com.
>> For more options, visit this group at 
>> http://groups.google.com/group/django-developers?hl=en.
>>
>>
>>
>
> --
>
> You received this message because you are subscribed to the Google Groups 
> "Django developers" group.
> To post to this group, send email to django-develop...@googlegroups.com.
> To unsubscribe from this group, send email to 
> django-developers+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/django-developers?hl=en.
>
>
>

It allows an object to return a URL that already has it's domain
defined (as might happen for a SaaS site with custom subdomains).

Alex

-- 
"I disapprove of what you say, but I will defend to the death your
right to say it." -- Voltaire
"The people's good is the highest law." -- Cicero
"Code can always be simpler than you think, but never as simple as you
want" -- Me

--

You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-develop...@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.


Reply via email to