On Mon, Mar 11, 2013 at 2:00 PM, jayhalleaux <jay.halle...@gmail.com> wrote:
>>> Any ideas on question 1? how to use named urls in settings.py?
>

The problem with having named URLs in settings.py (also some other
places, models.py for instance) is that at this point, the URL
resolving architecture has not yet been completed.

There is a simple solution - you do not actually want the URL in
settings.py at the time settings.py is parsed. When you actually want
the URL, everything is properly set up. Therefore, you can use a
simply lazy evaluation of your reverse call:

  from django.utils.functional import lazy
  from django.core.urlresolvers import reverse

  lazy_reverse = lazy(reverse, str)

  FOO_URL = lazy_reverse('mysite:my-named-url')

The downside of lazy is that this url will get re-generated each time
you access FOO_URL. There is a bit of magic for that too, you can
memoize the result:

  from django.utils.functional import lazy, memoize
  from django.core.urlresolvers import reverse

  _reverse_memo_cache = { }
  lazy_memoized_reverse = memoize(lazy(reverse, str), _reverse_memo_cache, 1)

  FOO_URL = lazy_memoized_reverse('mysite:my-named-url')

Cheers

Tom

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to