<div class="{% random class1,class2,class3,class4 %}">
Any ideas?
Sounds like you want to make a custom template tag that uses
random.choice() to make the choice for you. I haven't tested the
code below, but it's a starting point for what you describe:
from random import choice
from django import template
from django.template import resolve_variable
class RandomChoiceNode(template.Node):
def __init__(self, *choices):
self.choices = choices
def render(self, context):
try:
which = choice(self.choices)
result = resolve_variable(which, context)
return result
except template.VariableDoesNotExist:
return ''
http://www.djangoproject.com/documentation/templates_python/#passing-template-variables-to-the-tag
Fiddle accordingly.
-tim
One option is to use the 'random' filter; your context would need to
define the list of possible strings:
Context({
'classes': ['class1','class2','class3','class4']
})
but then your template could use:
{{ classes|random }}
Yours,
Russ Magee %-)
Can you serve Context to the base template?
I thought of that earlier, but I couldn't think of how to give it
Context.
What do you mean? You pass a context to the template renderer; if the
template you render references a base template, then it will get the
same contexts that the renderer was given.
If you want to hardcode the availability of the 'classes' variable in
every context (so you don't have to remember to define it every time),
you could write a context processor. See
django.core.context_processors for examples.
Russ %-)
That's probably what I'll need since it'll always have to be there.
(you'd need to make the |split filter too, Django only comes with |
join)