替代方案是什么:
{% 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))