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 -~----------~----~----~----~------~----~------~--~---