On Mon, Mar 11, 2013 at 2:00 PM, jayhalleaux <[email protected]> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.