2013-07-08 83 views
2

views.py随机循环的Django

def mainpage(request): 

    ads_right = Ads.objects.select_related().all().filter(ads_section = 'R') 
    ads_left = Ads.objects.select_related().all().filter(ads_section = 'L') 

    variables = RequestContext(request, {'ads_right': ads_right,'ads_left': ads_left}) 
    return render_to_response('index.html', variables) 

能否请您回答模板标签,如何洗牌 'ads_right' 和 'ads_left' 每个刷新。

回答

0

洗牌他们的意见吧:

ads_right = Ads.objects.select_related().all().filter(ads_section = 'R').order_by('?') 
ads_left = Ads.objects.select_related().all().filter(ads_section = 'L').order_by('?') 

# return things as always 
variables = RequestContext(request, {'ads_right': ads_right,'ads_left': ads_left}) 
return render_to_response('index.html', variables) 

如果你想有一个templatetag,你可以使用这样的事情:

@register.filter 
def shuffle(arg): 
    # slice it, cast it to list 
    my_list = list(arg[:]) 
    random.shuffle(my_list) 
    return my_list 

然后在模板:

{% for item in ads_left|shuffle %} 
+0

做我想用模板标签如果我是 使用 #洗牌 random.shuffle(ads_right) random.shuffle(ads_left) 的看法 –

+0

'查询集' 对象doestnot支持项目分配 –

+0

必须转换他们之前列出,我甚至写的。另外,如果你在你的视图中随机播放它们,你不需要templatetag –