2011-05-27 213 views
1

這裏的佈局: enter image description here 下面是代碼:代碼重複

#base.html 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>{% block title %}{% endblock %}</title> 
    </head> 
    <body> 
     <div id="content"> 
      <div id="l_col"> 
       {% block left %}{% endblock %} 
      </div> 
      <div id="r_col"> 
       {% block right %}{% endblock %} 
      </div> 
     </div> 
    </body> 
</html> 
#views.py 
def list(request): 
    vars = RequestContext(request, { 
     'news': News.objects.all(), 
     'top_news': News.news_manager.get_top_news() 
    }) 
    return render_to_response('news/list.html', vars) 

def view(request, id): 
    vars = RequestContext(request, { 
     'news': News.objects.filter(id = id), 
     'top_news': News.news_manager.get_top_news() 
    }) 
    return render_to_response('news/view.html', vars) 
#news/list.html and news/view.html 
{% extends 'base.html' %} 
{% block left %} 
    <!-- loop for news --> 
{% endblock %} 
{% block right %} 
    <!-- loop for top news --> 
{% endblock %} 

正如你看到的方法變量「top_news」重複:「名單」,「瀏覽」,並在2個模板相同的環路頂新聞
如何消除這種重複的代碼?

回答

2

我會寫一個template_tag,它將處理top_news。比你不必在視圖中傳遞它們,但將它包含在模板中的任何需要它的地方。

Inclusion Tags可能是最好的選擇。

2

頂級新聞的自定義模板標籤。