1

关于以下的逻辑替代方案是什么:

{% if request.user.is_active %}

如果视图没有返回render_to_response带有 的字典request,则模板无法正常工作。

所以,欢迎任何想法。

//已编辑

我的动机是:当您使用已安装应用程序的视图时,您没有机会修改它们。

4

2 回答 2

6

添加django.contrib.auth.context_processors.authTEMPLATE_CONTEXT_PROCESSORS您的settings.py.

现在您user的所有模板中都有变量。所以你可以使用这个:

{% if user.is_active %}

在文档中查看更多信息:设置中的模板上下文处理器身份验证上下文处理器

于 2012-10-10T17:00:44.237 回答
5

视图.py:

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

或上下文处理器:

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

模板.html:

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

但是说真的,我不知道为什么 render_to_response 不能满足你:

...
return render_to_response('template.html', 
    context_instance=RequestContext(request))
于 2012-10-10T16:48:02.707 回答