我在我的Django應用程序中有一個頁面,需要根據登錄用戶相對於一個組的狀態(不是Django用戶組;對我的應用程序定製的東西)在頁面上表示:Django模板 - 有條件地顯示登錄用戶的按鈕
- 如果用戶可以加入該組,顯示加入該組的鏈接。
- 如果用戶在組中,顯示一個離開組的鏈接。
- 如果用戶無法加入該組,則不要顯示任一鏈接。
這樣做的一種方法是創建三個模板(一個帶有連接鏈接,一個帶有離開鏈接,一個沒有鏈接)並在視圖中選擇合適的模板。我覺得有三種不同的模板只會在一行代碼中有所不同,所以我還沒有走過那條路線。
僅僅使用模板顯示條件1和2的正確內容是不可能的,如果是這樣的話,我不認爲這是可取的。用戶到組是多對多的關係,並且確定組成員身份需要將用戶傳遞給組或將用戶組傳遞給用戶。
由於Django模板不允許傳遞函數參數,我試圖通過使用get_context_data
將上下文變量傳遞給模板來解決此問題。
def get_context_data(self, **kwargs):
context = super(NetworkDetails, self).get_context_data(**kwargs)
user = ???
context['in_group'] = user.in_group(context['group_detail'])
return context
如果我這樣做,我怎麼能得到當前登錄的用戶在該方法?如果這是不可能的,我還可以在模板之外獲得哪些信息?有沒有一種可以接受的方法來做這樣的事情?
謝謝!
對不起,它可能一直不清楚,但我正在討論的是從views.py中的函數中顯示三個模板中的一個,而不是從模板本身內部完成它。然而'get_context_data'內的'self.request.user'確實是我在找的東西。謝謝! – jonmorgan 2012-07-12 14:46:35