替代 {% if request.user.is_active %} 在 Django 模板中


逻辑

替代方案是什么:

{% if request.user.is_active %}

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

因此,欢迎任何想法。

//编辑

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

django.contrib.auth.context_processors.auth添加到settings.py中的TEMPLATE_CONTEXT_PROCESSORS

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

{% if user.is_active %}

有关详细信息,请参阅文档:设置中的模板上下文处理器、身份验证上下文处理器。

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

模板.html:

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

但真诚地说,我不知道为什么render_to_response不让你满意:

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

最新更新