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