1

什麼是對邏輯的替代品:替代{%如果request.user.is_active%} Django的模板

{% if request.user.is_active %} 

如果視圖不帶字典,request返回render_to_response,模板沒有按」 t正常工作。

所以,任何想法都是值得歡迎的。

//編輯

我的動機是:當你從安裝的應用程序視圖的工作,你不必修改它們的機會。

回答

5

添加django.contrib.auth.context_processors.authTEMPLATE_CONTEXT_PROCESSORSsettings.py

現在您的所有模板中都有user變量。所以,你可以使用這個:

{% if user.is_active %} 

查看更多在docs:template context processors in settingsauth context processor

+0

'auth'是默認包含的,也可以使用'request'上下文處理器,它默認不包含。此外,它更好地注意到RequestContext是用法所必需的。 – okm

5

view.py:

def foo_view(request): 
    ... 
    is_active = request.user.is_active 
    return render_to_response('template.html', {'is_active':is_active}) 

或context_processor:

def is_user_active(request): 
    return {'is_active': request.user.is_active} 

或中間件:

class IsUserActive: 
    def process_template_response(self, request, response): 
     response.context['is_active'] = request.user.is_active 

template.html:

{% if is_active %} 
    ... 
{% endif %} 

但真誠的,我不知道爲什麼選擇render_to_response不能滿足你:

... 
return render_to_response('template.html', 
    context_instance=RequestContext(request)) 
+0

當您從安裝的應用程序使用一些無法修改的視圖時,例如:userena應用程序,登錄,註銷視圖。 – cleliodpaula