On 3/29/06, Arthur <[EMAIL PROTECTED]> wrote:
>
> > > "correct" and just as simple, and each time I've failed.  As far as
> > > I'm concerned, if someone can come up with a way to do this that's
> > > stupidly simple then I'm all for a change, but at the same time
> > > get_absolute_url() is a wart I'm willing to live with.
> >
> > In the model you want to know "what is this object's identifier that
> > we would use in a url".   That might be just an object ID, a slug,
> > or maybe yyyy/mm/dd/id or who knows what.  This would be formated
> > such that it could be used as-is as PART of a URL.  Let's call this method
> > "get_id_for_url()"  (or whatever you end up calling it)  That seems to be
> > the appropriate type of data to come from a Model.. i.e. not the entire
> > absolute URL, but just a portion of the URL that would be used to
> > identify this Model's object.
> >
> > Then, in the particular view (not clear, it might be and/or in the
> > template) you would want to combine some base URL string with the
> > previous get_id_for_url string to make it into a real url.  To do that
> > might need just a variable "base_url" (or it could be yet another view
> > specific method) that changes by the view.
> >
> > So in a template you'd have to do
> >     {{ base_url }}{{ this-object.get_id_for_url }}
> >
> > In your urls.py and/or view you'd setup a dict to pass the appropriate
> > value to the template e.g.
> >    info_dict = {
> >        'app_label': 'myapp',
> >        'module_name': 'mymods',
> >        'base_url': 'mymods',
> >    }
> >
> > That would allow me to use the generic views if I sent the 'base_url' 
> > correctly,
> > or you could even have it default to the 'module_name'.  Or I could code
> > it into my view's code however I wish.
>
> That's similar to what I do. The get_absolute_url() concatenates a
> <SOME_APP>_BASE_URL from settings.py or from the top of models.py with
> what you call get_id_for_url. This isn't completely clean but easy to
> change if you remember where to look for the constant.
>
> Arthur

I was do the similar thing. I put a dict in settings.py just like:

APP_ROOT = {'blog':'blog', 'setting':'setting'}
HOST_URL = 'http://mydomain.com'

And I provide some api for get the combined url like:

url = join_app_path('blog', obj.url())

In here, obj.url() just a related path according to the application
url. And join_app_path will auto pick up the HOST_URL, so the result
will be:

'http://mydomain.com/blog/' + obj.url()

the join_app_path will automaticly deal with '/'.

APP_ROOT represents different application url prefix but not including domain.


--
I like python!
My Blog: http://www.donews.net/limodou
NewEdit Maillist: http://groups.google.com/group/NewEdit

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users
-~----------~----~----~----~------~----~------~--~---

Reply via email to