2012-07-05 52 views
0

Whaat我想做的事: 有一個布爾變量:has_sidebar檢查我是否應該包括側邊欄部分或不Django的 - 在基本模板檢查變量被修改通過查看功能

的部分被稱爲在base.html中,我的基本模板

視圖函數應該能夠更改has_sidebar來聲明響應是否將使用邊欄進行渲染。

#views.py 
def my_func1(request): 
    has_sidebar = True 
    return render_to_response('template1.html', {}, context_instance=RequestContext(request)) 

def my_func2(request): 
    has_sidebar = False 
    return render_to_response('template2.html', {}, context_instance=RequestContext(request)) 

#base.html 
{% if has_sidebar %}{%include 'sidebar.html'%}{%endif%} 

#template1.html 
{% extends 'base.html' %} 

#template2.html 
{% extends 'base.html' %} 

我該怎麼做?提前致謝!

注意:HTML佈局只允許我在基礎模板中渲染邊欄。

+1

這是在Django一個非常基本的功能 - 使用的RequestContext將變量傳遞給模板。你試過了嗎? – Tisho

+0

好的。我可能說錯了。我所有的視圖操作都會擴展base.html。除了base.html,我的每個視圖操作都有不同的模板。 base.html是一個「基本模板」,沒有任何視圖動作顯式呈現。編輯 – yretuta

+0

那麼這裏有什麼問題?只需在render_to_response中傳遞has_sidebar即可。 – Tisho

回答

1

當您返回base.html文件將被渲染,添加from django.shortcuts import render_to_response你views.py的頂部,並把下面的兩個my_funcs:

return render_to_response('base.html', {'has_sidebar': has_sidebar})