2014-10-06 106 views
0

我看過類似的問題和答案,但沒有解決我的問題。將變量傳遞給Django中的模板

我希望我的視圖執行用戶組檢查,然後將該變量傳遞給模板。然後該模板將使用該模板以不同的用戶組顯示。

我views.py:

def cans(request): 
    is_canner = request.user.groups.filter(name='canner') #check if user group = canner 
    can_list = Can.objects.order_by('name') 
    context = {'can_list': can_list} 
    return render(request, 'cans/cans.html', context) #need to return is_canner variable here 

而且在我的模板,我會用像這樣的變量:

{% if is_canner %} canner stuff goes here {% endif %} 

我不能確定如何通過這個變量,我認爲這是上下文發送它像這樣:

return render(request, 'cans/cans.html', context({"is_canner": is_canner})) 

但這給了我錯誤 - 上下文不可調用。

回答

5

上下文不是函數,它是渲染函數的參數,例如,

context = {"is_canner": is_canner} 
return render(request, 'cans/cans.html', context) 

文檔:https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#render

更多的背景信息:Django - what is the difference between render(), render_to_response() and direct_to_template()?

+0

在加載模板時,這給了我一個錯誤:render_to_string()得到了一個意想不到的關鍵字參數「語境」 – Dawson 2014-10-06 07:50:24

+0

我已經更新了答案 – 2014-10-06 07:54:01

+0

非常感謝,這正是我一直在尋找的。 – Dawson 2014-10-06 08:13:19

相關問題